を通じて別の進行状況バーを描画する必要がありますVisualStyleRenderer
。Graphics
メソッドを使用すると、すべて正常に動作しますOnPaint
。しかし、ハードドライブに保存したいので、プログレスバーをBitmap
オブジェクトにレンダリングしてから保存する必要があります。
ここにコード例があります
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawImage(RenderProgressbarImage(), new Point(5, 5));
//following code works good
progressRenderer.SetParameters("PROGRESS", 11, 2);
progressRenderer.DrawBackground(e.Graphics, new Rectangle(125, 5, 100, 13));
}
VisualStyleRenderer progressRenderer = new VisualStyleRenderer(VisualStyleElement.ProgressBar.Bar.Normal);
Bitmap RenderProgressbarImage()
{
Bitmap bmp = new Bitmap(100, 13);
using (Graphics g = Graphics.FromImage((Image)bmp))
{
progressRenderer.SetParameters("PROGRESS", 11, 2);
progressRenderer.DrawBackground(g, new Rectangle(0, 0, bmp.Width, bmp.Height));
}
return bmp;
}
しかし、ビットマップで描画すると、透明ではなく黒い角になります。しかし、 を使えば、すべてGraphics
がOnPaint
うまく描画されます。