现在我先实现这样一个功能:程序在绘制图片的同时进行图像的平移,平移的时候绘图不中断。
我之前一直是在pictureBox里面加上一张空白位图,然后在位图上画。期望能达到效果,但不行。因为之前测试认为花在位图上的图像是可以得到保留的,不会被refresh掉。但平移的时候老出问题。不知道大家有什么其他好的办法?谢谢!
我之前一直是在pictureBox里面加上一张空白位图,然后在位图上画。期望能达到效果,但不行。因为之前测试认为花在位图上的图像是可以得到保留的,不会被refresh掉。但平移的时候老出问题。不知道大家有什么其他好的办法?谢谢!
解决方案 »
- 菜鸟求助一个很简单的问题,麻烦说详细一点,谢谢!!!
- 求帮助,诡异的DLL的引用问题。
- RadioButtonList选中项值的获取?
- winform dateTimePicker如何获取选择后的值
- 简单问题,类的继承,接口的继承。
- 求代码模板示例
- 各位求救!哪里有源代码下载?
- 谁知道SharpDevelop的源代码的VS2003版??
- 数据显示问题:如何不用GRIDVIEW显示数据库数据,最好是ASP显示的方式,但是对库的操作是在.CS里的.谢谢!!!
- 如何将Excel中的数据填充到DataGrid中,WindowsForm实现.
- 如何拆分数组?
- 如何使用C#操作Word的文字格式居中或左右对齐?
然后将该位图对象使用DrawImage方法显示在PictureBox上。此时决定绘制的原点坐标即可实现平移//在内存中画好需要的图形
Bitmap buffer = new Bitmap();
Graphics gBuffer = Graphics.FromImage(buffer);
gBuffer.Clear(Color.Black);
gBuffer.DrawRectangle(new Pen(Color.Yellow,2),new Rectangle(100,100,200,200));
gBuffer.Dispose();//显示在PictureBox,PictureBox的名字叫picShow
Graphics gShow = picShow.CreateGraphics();
//x,y为你需要显示图形的位置坐标
gShow.DrawImage(buffer,x,y);
先将全图画在Buffer对象中,
然后使用Graphics的DrawImage方法
DrawImage(Image, RectangleF, RectangleF, GraphicsUnit)
在指定位置并且按指定大小绘制指定的 Image 的指定部分。你只要计算需要显示的范围,就可以实现了
我的思路是图片依然是绘制在PictureBox上,移动图片不需要重新计算图片位置并绘制图片。
只需要PictureBox做移动操作。当然PictureBox是放在Panel容器控件里。
1.计算平移后需要显示的范围,将该范围存储为类的变量
2.picturebox.Refresh()在PictureBox的Paint事件中写重画代码
这样肯定没有问题的。