想要实现的功能是先画一条箭头线,然后使用其他颜色抹掉
画线时使用了平滑选项(这是关键点,如果不使用此选,可以盖住)
画线的简单参考代码如下: Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawLine(pen, new Point(10, 10), new Point(200, 100));
g.Dispose();
画线时使用了平滑选项(这是关键点,如果不使用此选,可以盖住)
画线的简单参考代码如下: Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawLine(pen, new Point(10, 10), new Point(200, 100));
g.Dispose();
解决方案 »
- 初学者纠缠于return......
- Remoting 的小问题
- C# 关闭Form时出错:索引超出范围。必须为非负值并小于集合大小
- 关于WINDOWS service的问题
- 百分求教:如何从WinForm上将一个字符串拖拽到一个Excel表中的某个单元格上
- 为什么winform的最小高度只能是24px?? 无论怎么设置都实现不了更小高度的form,HELP
- winform 通过webservice访问数据库有什么好处?
- asp.net聊天室源代码
- 編寫的程序,如何實現簡體,繁體,English之間先護切換啊
- 怎么把一个字符串转化成ASCII码?
- 给枚举成员加的自定义特性,怎么在程序中提取?
- 求助这个SQL语句该怎么写
直接使用Invalidate的重载的一个函数,让控件重新绘制。
http://blog.csdn.net/hbxtlhx/archive/2007/08/31/1766913.aspx
那么多的线,闪很正常了,你看autocad不也会闪。
我说个思路,你重绘那个区域的图形。就是判断要重画的矩形,看有多少条线在这个矩形里,在这个矩形里的就重绘。我没做过这种,仅供参考。
橡皮线本身就是用异或线画出来的
每次重绘橡皮线所在的最小外包矩形就好了
[DllImport("user32", EntryPoint = "DrawFocusRect")]
public static extern int DrawFocusRect(IntPtr hdc, ref RECT rect);
http://blog.csdn.net/wzuomin/archive/2006/12/13/1441007.aspx
使用类似下面的Graphics绘制
Function GetGraphics(ByVal pic As PictureBox) As Graphics
Dim bmp As Bitmap = New Bitmap(pic.Width, pic.Height)
pic.Image = bmp Dim g As System.Drawing.Graphics = Graphics.FromImage(bmp)
Return g
End Function