C# WinForms 在 PictureBox 上绘制位图绘制次数过多

问题描述 投票:0回答:1

我使用 C# WinForms 应用程序,其中包含一些 PictureBox。
我画了一些图,一开始(因为盒子的大小)我没有注意到错误,
但经过几个盒子后,我注意到我的代码运行良好,
但绘制的图像是错误的。
就好像绘图方法被调用的次数比调试器中调用的次数要多。

正如您在这里看到的:

[error drawing]

(https://i.stack.imgur.com/vE06K.png)

我多次运行我的代码,
已为表单启用/禁用

DoubleBuffering
,相同的行为。
我使用断点来查看我是否在代码中多次调用绘图,

但是不,它被调用过一次。我总是在方法中使用它:

    Bitmap bmp = new Bitmap(Resources.<backgroundfile>, 342, 54);
    RectangleF rectfLage = new RectangleF(16, 14, 60, 22);
    Graphics graphicLageNr = Graphics.FromImage(bmp);
    graphicLageNr.SmoothingMode = SmoothingMode.AntiAlias;
    graphicLageNr.InterpolationMode = InterpolationMode.HighQualityBicubic;
    graphicLageNr.PixelOffsetMode = PixelOffsetMode.HighQuality;
    graphicLageNr.DrawString($"{lage}", new Font("Tahoma", 16), Brushes.Black, rectfLage);
    graphicLageNr.Flush();

之后,我将 PictureBox 的背景设置为 NULL,然后设置为位图。

    Controls[0].Controls[2].Controls["lagenr"].BackgroundImage = null
    Controls[0].Controls[2].Controls["lagenr"].BackgroundImage = bmp  

我可能做错了什么?

c# winforms bitmap picturebox
1个回答
0
投票

问题解决了。
我所要做的就是设置正确的模式。

Picturebox.SizeMode
必须是
CenterImage

© www.soinside.com 2019 - 2024. All rights reserved.