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));
}
}