用.NET做个简单的画图程序为什么这么麻烦!疯了!
想用.net做个简单的画图软件,找遍了MSDN居然没有SetPixel!上网搜了一下解决方法,都是用什么DrawLine,DrawEllips等来模拟,但据我测试这些方法全都不行,都不能精确的画出一个点。比如DrawLine(pen,10,10,10,10)根本什么反应都没有。还有,用.net怎么样做出动态绘图的效果?比如画线的时候在MouseMove时动态显示当时画出的直线,只有当MouseUp的时候这条直线才被确定画出来。每次MouseMove的时候需要刷新MouseDown之前的画布缓存,这个用.net如何实现?
哎,想当初我在嵌入式上做的一个类似的画图软件,所有操作都是修改显存,SetPixel自己编,三行代码就能搞定,动态绘图效果只用保存旧的显存数据就行了。难道强大的.net还没有底层编程来得方便??还是我有没了解到的地方?
如果哪位大虾知道.net怎么解决动态绘图问题,请不吝赐教,谢谢! --------------------编程问答-------------------- Bitmap.SetPixel 方法 --------------------编程问答-------------------- 我曾这样试过:
Bitmap bit = new Bitmap(1, 1);//建立一个1*1像素的Bitmap
bit.SetPixel(Point.X, Point.Y, defPen.Color);//在Point处画defPen指定颜色
这样子会报错“[System.ArgumentException] {"值不在预期的范围内。"}” --------------------编程问答-------------------- //先用API解决,这个问题再找找有没有简单的方法,关注
[DllImport("gdi32.dll")]
static extern int GetPixel(IntPtr hdc, int XPos, int YPos);
[DllImport("gdi32.dll")]
static extern int SetPixel(IntPtr hdc, int X, int Y, int crColor);
public int ColorToRGB(Color crColor)
{
return crColor.B << 16 | crColor.G << 8 | crColor.R;
}
private void button1_Click(object sender, EventArgs e)
{
Graphics vGraphics = Graphics.FromHwnd(Handle);
SetPixel(vGraphics.GetHdc(), 10, 10, ColorToRGB(Color.Red));
}
--------------------编程问答-------------------- 我觉得是用外部API不是个好的解决方案,比如在Pocket PC上怎么办?我要做的这个简单的画图程序就是做在Pocket PC上的 --------------------编程问答-------------------- 还有动态绘图效果用.net该怎么样实现呢?
我所说的动态绘图效果是指:用画线函数等绘图的时候,用户可以任意拖动鼠标绘制,并且动态显示出当前的绘制效果,而只有当MouseUp之后绘制效果才定型。就类似于Photoshop中画线、画圆那样。
我现在只能达到的效果是:鼠标拖动的时候绘制出的是同一起点的一系列的线(因为每次MouseMove的时候都没有将上次绘制出来的直线去除掉) --------------------编程问答-------------------- 象素,呵呵。你可以绘制个一个象素长宽的矩形啊。 --------------------编程问答-------------------- Q:都不能精确的画出一个点
A:画点是不能用的,有画点的方法,如FillPie()
Q:用.net怎么样做出动态绘图的效果?
A:应该使用GraphicsPath类,而且MSDN上有现成实例,跟你要求的一模一样
--------------------编程问答-------------------- Up...
JF --------------------编程问答-------------------- up --------------------编程问答-------------------- up --------------------编程问答-------------------- 用c++写好了, 用.net还要framework支持, 多麻烦啊, 而且速度很慢 --------------------编程问答-------------------- 回wuyazhe(wyz&xyl) ,画长宽一个像素的矩形的方法我验证过,画出来的不是精确的一个像素,而是2*2的一个矩形。画长短轴为1的椭圆我也验证过,画出来的也不是精确的一个像素,而是一个1*2的矩形。
回jcyluck,谢谢你的建议,我会参考一下MSDN --------------------编程问答-------------------- up --------------------编程问答-------------------- 可以分段显示,一个时间间隔画一小段 --------------------编程问答-------------------- 去试试 DrawingVisual
Graphics
--------------------编程问答-------------------- 说个题外话——今天所有的帖子到现在,我还没遇见wuyq11,那个三颗钻的,有问必答的神人。汗'''' --------------------编程问答-------------------- 哈哈,支持一下 --------------------编程问答-------------------- 工作量超大的,我刚完成了一个文本编辑器,也是花了一个月,并且我还不算初学者,估计画图片不会比文本编辑器简单! --------------------编程问答-------------------- 使用 WPF 创建绘图应用程序
http://msdn.microsoft.com/zh-cn/library/bb531278(v=vs.90).aspx
补充:.NET技术 , C#