5

透明な背景を持つ Label を使用できないため、GraphicsBox の上にいくつかの文字列を手動でレンダリングしています。

ただし、どのレンダリングモードを試しても、文字列を適切に表示することはできません (つまり、Word やグラフィックプログラムで表示されるように)。

画面に表示されるものと比較したインターフェースのモックアップの写真を次に示します。 ここに画像の説明を入力

残念ながら、StackOverflow は画像を縮小しているように見えるので、ここにも直接リンクがあります: http://i.stack.imgur.com/vYFaF.png

レンダリングに使用されるコードは次のとおりです。

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
  Graphics labelDrawing = e.Graphics;
  labelDrawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;

  labelDrawing.DrawString("Setup Progress", new Font("Calibri", 10, FontStyle.Bold, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(12, 9));
  labelDrawing.DrawString("The following components are being configured.", new Font("Calibri", 10, FontStyle.Regular, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(24, 27));
}

TextRenderingHint をすべてのオプションに順番に変更しようとしましたが、アンチエイリアスがある場合は何を試しても、スクリーンショットのようにぼやけて汚れた混乱になります。何か案が?

4

1 に答える 1

2

.NET では透明なラベルを使用できます。Windows フォームで透明な画像とラベルを使用する方法
については、CodeProject のこの記事を参照してください。

描画の問題については、 Calibriのネイティブ フォント サイズが 10 ではありません。これは、[コントロール パネル] -> [フォント] で確認できます。最小のネイティブ フォント サイズは 12 です (少なくとも私のマシンでは)。サイズを 12 に変更すると、はるかに優れていることがわかります。

内部のどこかでネイティブ フォント サイズを使用しない場合、Windows/.NET/GDI+ はフォントをスケーリングしようとします。このスケーリングが問題の原因である可能性が最も高いです。

于 2009-10-13T09:13:03.103 に答える