项目里 要用到画图 并且最大化 和常态都要自适应 并且线还能被擦掉 我就没画在图片上(主要是这个是老大开发自定义控件 我不知道怎么画在这个控件的图片上。。。), 然后就出现了下图的运算 var x1 = ImgXInfo.lineStartPoint.X * ImgXInfo.MaxWidth / ImgXInfo.MinWidth; var y1 = ImgXInfo.lineStartPoint.Y * ImgXInfo.MaxHeight / ImgXInfo.MinHeight; var x2 = ImgXInfo.lineEndPoint.X * ImgXInfo.MaxWidth / ImgXInfo.MinWidth; var y2 = ImgXInfo.lineEndPoint.Y * ImgXInfo.MaxHeight / ImgXInfo.MinHeight; e.Graphics.DrawLine(p,x1,y1,x2,y2); int width = x2 - x1; int height = y2 - y1; int result = (width * width) + (height * height); res = Math.Sqrt(result);//根号 ImgXInfo.Linelength =Convert.ToInt32(res); //e.Graphics.DrawLine(p, ImgXInfo.lineStartPoint.X / ImgXInfo.MinWidth* ImgXInfo.MaxWidth , ImgXInfo.lineStartPoint.Y / ImgXInfo.MinHeight* ImgXInfo.MaxHeight , ImgXInfo.lineEndPoint.X / ImgXInfo.MinWidth* ImgXInfo.MaxWidth , ImgXInfo.lineEndPoint.Y / ImgXInfo.MinHeight* ImgXInfo.MaxHeight );
注释部分为我没找到原因的时候写法,当时我已经查看了 ImgXInfo.lineStartPoint ImgXInfo.MaxHeight ImgXInfo.MaxHeight ImgXInfo.MinHeight
ImgXInfo.MinWidth 窗体重绘后就是出不来这条线 var x1 = ImgXInfo.lineStartPoint.X * ImgXInfo.MaxWidth / ImgXInfo.MinWidth; var y1 = ImgXInfo.lineStartPoint.Y * ImgXInfo.MaxHeight / ImgXInfo.MinHeight; var x2 = ImgXInfo.lineEndPoint.X * ImgXInfo.MaxWidth / ImgXInfo.MinWidth; var y2 = ImgXInfo.lineEndPoint.Y * ImgXInfo.MaxHeight / ImgXInfo.MinHeight; //var x1 = ImgXInfo.lineStartPoint.X / ImgXInfo.MinWidth * ImgXInfo.MaxWidth ; //var y1 = ImgXInfo.lineStartPoint.Y / ImgXInfo.MinHeight * ImgXInfo.MaxHeight ; //var x2 = ImgXInfo.lineEndPoint.X / ImgXInfo.MinWidth * ImgXInfo.MaxWidth ; //var y2 = ImgXInfo.lineEndPoint.Y / ImgXInfo.MinHeight * ImgXInfo.MaxHeight ; e.Graphics.DrawLine(p,x1,y1,x2,y2); int width = x2 - x1; int height = y2 - y1; int result = (width * width) + (height * height); res = Math.Sqrt(result);//根号 ImgXInfo.Linelength =Convert.ToInt32(res); //e.Graphics.DrawLine(p, ImgXInfo.lineStartPoint.X / ImgXInfo.MinWidth* ImgXInfo.MaxWidth , ImgXInfo.lineStartPoint.Y / ImgXInfo.MinHeight* ImgXInfo.MaxHeight , ImgXInfo.lineEndPoint.X / ImgXInfo.MinWidth* ImgXInfo.MaxWidth , ImgXInfo.lineEndPoint.Y / ImgXInfo.MinHeight* ImgXInfo.MaxHeight ); 因为被除数 ImgXInfo.lineStartPoint.X 比除数 ImgXInfo.MaxWidth小 所以除法运算后 int类型结果为0,0乘以任何数都得零!!!!! 然后 建个控制台应用程序 重新验证下 并记录成一个Demo 总结
|
|