我想在 foreach 循环中的 PictureBox 上绘制文本。这是负责渲染的代码(GG是当前循环中的PictureBox)
if (GG != null)
{
((PictureBox)GG).Image = (Image)obj;
using (Graphics g = ((PictureBox)GG).CreateGraphics()) {
g.DrawString(i["amount"].ToString(), kryptonRichTextBox1.Font,
new SolidBrush(Color.Gold), new Point(16, 18));
}
}
但遗憾的是,文本没有呈现。如果我注释掉
//((PictureBox)GG).Image = (Image)obj;
线,它确实有效!我不知道如何让它工作。
我想使用 TextRenderer,但我不知道如何获取控件的 IDeviceContext(我在互联网上看到的所有示例都在 Paint 事件中使用 PaintEventArgs.Graphics)。
此外,如果这是相关的,则 GG PictureBox 是另一个图片框的子项,并且具有透明背景。
我在无效后尝试刷新框,工作代码:
if (GG != null)
{
((PictureBox)GG).Image = (Image)obj;
((PictureBox)GG).Invalidate();
((PictureBox)GG).Refresh();
using (Graphics g = ((PictureBox)GG).CreateGraphics()) {
g.DrawString(i["amount"].ToString(), kryptonRichTextBox1.Font,
new SolidBrush(Color.Gold), new Point(16, 18));
}
}