4

DrawToBitmapいくつかのラベルを画像として保存するために使用しています。これらの画像の解像度を変更する方法を知りたいのですが、方法はありますか?テキスト付きのラベルがあり、それを画像ファイルにレンダリングしたいとします(完全なコードを投稿しません):

this.label1 = new System.Windows.Forms.Label();
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Baskerville Old Face", 36F);
//...
this.label1.Size = new System.Drawing.Size(161, 54);
this.label1.Text = "Output";
//...

//save image:
Bitmap image = new Bitmap(161, 54);
this.label1.DrawToBitmap(image, this.label1.ClientRectangle);
image.Save(@"C:\image.jpg");

これは正常に機能しています。次のようなものが表示されます。

結果の画像

解像度は大丈夫ですが、それを増やすことは可能ですか?この画像を少し拡大すると、個々のピクセルが大きなブロックとして表示されます。

ズームされた結果の画像

ベクターグラフィックではなく、問題ないので、これは正常なことです。個々のピクセルを大きなブロックとして表示する前にさらにズームインできるように、なんとかして変更したいと思います。何か案は?

ありがとうございました。

編集:私が白黒画像のみを使用している場合-画像をpngまたはgifとして保存する方が良いでしょうか?

4

2 に答える 2

1

このようなものでうまくいきます。ラベルから使用するフォントサイズを大きくするだけです。

    Bitmap CreateBitmapImage(string text, Font textFont, SolidBrush textBrush)
    {
        Bitmap bitmap = new Bitmap(1, 1);
        Graphics graphics = Graphics.FromImage(bitmap);
        int intWidth = (int)graphics.MeasureString(text, textFont).Width;
        int intHeight = (int)graphics.MeasureString(text, textFont).Height;
        bitmap = new Bitmap(bitmap, new Size(intWidth, intHeight));
        graphics = Graphics.FromImage(bitmap);
        graphics.Clear(Color.White);
        graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
        graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        graphics.DrawString(text, textFont, textBrush,0,0);
        graphics.Flush();
        return (bitmap);
    }
于 2012-11-02T10:34:26.227 に答える
0

これは、System.Drawing.Fontの2番目のパラメーターの値を増やすことで実現できます。

this.label1.Font = new System.Drawing.Font("Baskerville Old Face", 1000F);
于 2012-11-02T10:47:47.687 に答える