【发布时间】:2014-02-05 19:24:22
【问题描述】:
我有一个名为“画布”的面板。它是透明的。所以背景来自表单图像,它是深蓝色的。这显示在面板或画布中。
当我将画布保存为图像时,它会保存背景,但不会保存我在上面绘制的内容,我的绘图笔是黄色的。我可以看到它在面板上绘制。但是当我保存时...图像中没有黄线。
我错过了什么?我的黄线在哪里?
我正在使用计时器滴答声运行此程序...以更新视图。 这将跟踪 CNC 类型机器的位置。提供视觉位置 机器相对于零。
我的最终目标是拥有一个可缩放的“视口”,从而获得它 放入图像中,以便于调整大小并显示在图片框中,这将 处理拉伸的图像并自动居中?
我已经阅读了一些复杂的解决方案,但我更喜欢简单的解决方案。 任何帮助,将不胜感激。真诚的,
private void VMoveNow()//Draw on panel called "canvas".
{
double a = GV.MYa * -1; //Change Direction of Y Drawing.
xc = Convert.ToInt32(GV.MXa) + (canvas.Width / 2);
yc = Convert.ToInt32(a) + (canvas.Height / 2);
g = canvas.CreateGraphics();
g.DrawLine(p, x, y, xc, yc);
x = xc;
y = yc;
g.Dispose();
}
private void SaveBMP()
{
try
{
Bitmap mybmp = new Bitmap(canvas.Width, canvas.Height);
canvas.DrawToBitmap(mybmp, canvas.Bounds);
mybmp.Save("C:\\myimage.bmp");
}
catch
{
return;
}
}
【问题讨论】:
-
永远不要使用 CreateGraphics(),总是使用 Paint 事件。请注意,简单地最小化和恢复窗口也会使您丢失像素。
-
谢谢汉斯,我使用的是锁定表格和固定面板,也锁定到位,所有最小值和最大值都已关闭。所以表单和面板永远不会移动或调整大小。因此,我对 CreateGraphics 没有问题。以及通过提前处理我的 var ......我的大小调整、缩放或缩放都可以按预期工作。谢谢。