【发布时间】:2017-05-15 20:30:24
【问题描述】:
例如,我在PictureBox 中加载大图像(11000x8000),然后在其上绘制线条等。
如何无需重新加载从 hadrdrive 或内存中返回清晰的图像。我的东西有图片框或图形替代品谁能做到这一点。 现在我使用临时位图来清洁图像
Bitmap bitmap = new Bitmap(TempBitmap);
Graphics g = Graphics.FromImage(bitmap);
Point gPoint = Utils.GameToPoint(p, Image.Width, Image.Height, 2);
g.DrawLine(new Pen(Color.Red, 2), gPoint.X - 5, gPoint.Y + 5, gPoint.X + 5, gPoint.Y - 5);
g.DrawLine(new Pen(Color.Red, 2), gPoint.X - 5, gPoint.Y - 5, gPoint.X + 5, gPoint.Y + 5);
Image = bitmap;
base.CenterAt(gPoint);
【问题讨论】:
-
你是怎么画的?进入图像还是进入控件?显示一些代码!
-
“清晰图像”是什么意思?用纯色填充它?
-
干净的图像 = iamge 没有我的图形更改。添加绘画示例
-
如果您在位图中绘制,如您的代码所示,那么您要么必须从磁盘加载它,要么缓存一个副本。另一种方法是使用 e.Graphics 对象在 Paint 事件中绘制到图片框的表面。那里的图像保持干净,您需要做的就是设置一个标志或清除您的数据并调用 Invalidate。
-
我尝试覆盖 OnPaint,但 imagebox 具有滚动和缩放功能,因此不考虑这样做。绘制不随图像移动