【问题标题】:How to convert my Graphics.Drawline drawing on panel, to saved image?如何将面板上的 Graphics.Drawline 绘图转换为保存的图像?
【发布时间】: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 ......我的大小调整、缩放或缩放都可以按预期工作。谢谢。

标签: c# .net gdi+


【解决方案1】:

感谢收看。

经过几次尝试,我回答了自己的问题...我发现我可以缩放用于此绘图的 var...并且 Drawline 的大小将因此缩放。

所以我现在可以在面板中缩放 Drawline 绘图,不需要图片或图片框。做我想做的事。

将 Pen 宽度设置为 -1 可以调整其大小。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多