5

を通じて別の進行状況バーを描画する必要がありますVisualStyleRendererGraphicsメソッドを使用すると、すべて正常に動作します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;
}

しかし、ビットマップで描画すると、透明ではなく黒い角になります。しかし、 を使えば、すべてGraphicsOnPaintうまく描画されます。

スクリーンショット

4

2 に答える 2