C# 关于GDI+绘制直线问题

ailsa512 2014-04-10 02:54:41
本人刚着手GDI+的部分操作,在绘制直线的时候遇到一个感到疑惑的问题。
要求是在每行文字下面绘制两条或三条下划线,采用Graphics.DrawLine函数绘制之后,有些行很正常的绘制出来,有些行则两条线合到了一起。
如下图:

直线之间的间隔改变也没用。采用SetClip或者TranslateTrasform也没有作用,想请教高手指教~~
...全文
294 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ailsa512 2014-04-24
  • 打赏
  • 举报
回复
按上面给的方法把文字的分布用pointF替换后,还是出现bug。只能寄希望是屏幕的分辨率了。。
iloli 2014-04-11
  • 打赏
  • 举报
回复
依我看是因为屏幕分辨率的问题造成的。当然前提是你那些线的位置没有画错。 这个我用WORK EXCEL等软件的时候都一样会有这情况。就是当你在一个很小的空间里画很密的线时,由于屏幕分辨率的问题 你会发现几条线挤到一起去了,但放大显示的时候又好了。
good_jobs 2014-04-10
  • 打赏
  • 举报
回复
使用PointF,single 不要用Point,int
ailsa512 2014-04-10
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
应该是你的坐标控制的不好
坐标使用累加计算每行的顶端位置,绘制的时候是每行从左向右绘制文字,当前行的文字貌似没有受到别的行的影响呀。。
ailsa512 2014-04-10
  • 打赏
  • 举报
回复
引用 2 楼 zhenghao1977 的回复:
直线的坐标的问题
如上
ailsa512 2014-04-10
  • 打赏
  • 举报
回复
System.Drawing.Drawing2D.GraphicsState backState = myGraph.Save(); myGraph.ResetClip(); for (int i = 0; i < intLineNum; i++) { //int tHeight = (int)(vHeight-3 + 5 * i); DrawLine(DefaultAddColor, vLeft, vTop + vHeight , vLeft + vWidth, vTop + vHeight); myGraph.TranslateTransform(0, 5); } myGraph.Restore(backState); 这是代码,想问问难道我绘制完一行文字后,绘制后面的文字会对上一行文字有影响么? 每行的顶部定位采用的是累加行高的方法,实在想不通原因。。
zhenghao1977 2014-04-10
  • 打赏
  • 举报
回复
直线的坐标的问题
bdmh 2014-04-10
  • 打赏
  • 举报
回复
应该是你的坐标控制的不好

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧