说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

高分请教画矩形的问题,顶者有分

编辑:说三道四文库 发布时间:2018-08-19 03:52
HTML文档下载 WORD文档下载 PDF文档下载
请问如何根据一中心点坐标和对角线与水平线夹角画矩形,我现在使用4点结构画的,但是点结构的坐标只能是int型的,这使画完的矩形不准确,请高手赐教
Rectangle rec=new Rectangle(imgLeft1,imgTop1,(int)imgWidth1,(int)imgHeight1);
里面的参数 只能是int
那么如何使我的矩形位置准确呢
实际上屏幕上的点是有限的,不可能精确到0.1个像素。所以你的问题没意义。
确定了 图片在form上的
(imgLeft,imgTop,imgWidth,imgHeight);
这4个参数应该没有问题了啊
确定了 图片在form上的
(imgLeft,imgTop,imgWidth,imgHeight);
这4个参数应该没有问题了啊

这样不行 这只能画水平放置的矩形 而我需要任意角度的
只好当做你现在画的是你要的图的放大10倍了
double onacross = Math.Sqrt(RectAllStru.la[i]*RectAllStru.la[i]+RectAllStru.sa[i]*RectAllStru.sa[i])/2;
double angle_1 = RectAllStru.Alpha[0,i];
double angle_2 = Math.Acos((2*onacross*onacross-RectAllStru.la[i]*RectAllStru.la[i])/(2*onacross*onacross));
double angle_3 = Math.Acos((2*onacross*onacross-RectAllStru.sa[i]*RectAllStru.sa[i])/(2*onacross*onacross));

Point point1 = new Point((int)CorChange(1,RectAllStru.rbase[i],RectAllStru.cx[0,i]+onacross*Math.Cos(angle_1)),(int)CorChange(2,RectAllStru.rbase[i],RectAllStru.cy[0,i]+onacross*Math.Sin(angle_1)));
Point point2 = new Point((int)CorChange(1,RectAllStru.rbase[i],RectAllStru.cx[0,i]+onacross*Math.Cos(angle_1+angle_2)),(int)CorChange(2,RectAllStru.rbase[i],RectAllStru.cy[0,i]+onacross*Math.Sin(angle_1+angle_2)));
Point point3 = new Point((int)CorChange(1,RectAllStru.rbase[i],RectAllStru.cx[0,i]+onacross*Math.Cos(angle_1+angle_2+angle_3)),(int)CorChange(2,RectAllStru.rbase[i],RectAllStru.cy[0,i]+onacross*Math.Sin(angle_1+angle_2+angle_3)));
Point point4 = new Point((int)CorChange(1,RectAllStru.rbase[i],RectAllStru.cx[0,i]+onacross*Math.Cos(angle_1+2*angle_2+angle_3)),(int)CorChange(2,RectAllStru.rbase[i],RectAllStru.cy[0,i]+onacross*Math.Sin(angle_1+2*angle_2+angle_3)));

Point[] curvePoints = {point1,point2,point3,point4};

dc.DrawPolygon(BlackPen,curvePoints);

注:其实int的影响并不大,我试过了,可以忽略
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘