1

これが私のコードです:

 Graphics g = Graphics.FromImage(newImage);

  var myBrush = new SolidBrush(Color.FromArgb(32, 205, 205, 205));
   g.DrawString(label, new Font("verdana", 10, GraphicsUnit.Pixel), myBrush, 10,10);

画像に文字列を入れるのはあまりうまくいきません。このコードは非常にうまく記述できますが、文字列を左下隅から右上隅に配置できませんでした。何か提案はありますか?

4

2 に答える 2

1
g.RotateTransform(45f);

そしてその後だけ

g.DrawString(label, new Font("verdana", 10, GraphicsUnit.Pixel), myBrush, 10,10);

しかし、それは45度しか回転しません。ボタンのサイズとメソッドを使用して計算できるテキストの長さに応じて、テキストMeasureStringの角度と位置を調整する必要があります。幾何学が好きだといいのですが。

http://msdn.microsoft.com/en-us/library/system.drawing.graphics.rotatetransform(v=vs.100).aspx

文字列が描画される位置を移動するには、グラフィックオブジェクトのTranslateTransform(dx、dy)メソッドを使用する必要があります。

http://msdn.microsoft.com/en-us/library/6a1d65f4(v=vs.100).aspx

したがって、文字列を中央に描画するには、translate、rotate、drawの順に呼び出します。それでもうまくいかない場合は、回転と移動の順序を変更してみてください。

于 2013-01-18T20:57:51.417 に答える
0

対角線の画像が見つかった場合 (難しいことではありません)、ボタンの背景画像プロパティをその画像に設定するだけです。そのコードは次のようになります。

button1.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.img2));

画像が適切に整列しない場合に備えて、画像などを引き伸ばすために設定するプロパティがあると思います。

于 2013-01-18T20:54:44.827 に答える