タイトル : Re^7: DrawStringについて 投稿日 : 2007/07/24(Tue) 22:49 投稿者 : よねKEN
> > > どうすれば左下を基点にした斜体に出来るか悩んでおります > > > > ということの意味は、 > > > > >myTransform.Shear(nudSkew.Value, 0) > > myTransform.Shear(-nudSkew.Value, 0) > > > > こういうことであってますか? > > 御指摘の所だと傾きの向きが逆になるだけですね。 「左下を基点にした斜体」という説明の意味がよくわからなかったので、 斜体の傾きが普通の斜体字のイメージと違って、逆向きなのが問題なのですか? という意味で、私なりの解釈した案を書いてみました。 違うのであれば、具体例を挙げて説明して欲しいところです。 #正直、「傾斜の基点が左上になります、普通は左下ですよね」の意味がわかっていません。 > このサンプル、PictureBoxの真中に一つだけ斜体の文字列を出す > ならば良いのですが。汎用性を持たせようとすると(複数個の文字列を > それぞれ任意の場所に描画する)。 > どうしていいのか判りません。 斜体の表示する座標を制御したい?という意味だったのでしょうか? TranslateTransformメソッドは座標空間を平行移動していますが、 これはこのサンプルでpicDemoAreaの中心位置にテキストを表示するために 行っているものです。 特に必要なければ、 > xLocation = (picDemoArea.Width - textSize.Width) / 2 > yLocation = (picDemoArea.Height - textSize.Height) / 2 > > g.TranslateTransform(xLocation, yLocation) は丸ごと削っても差し支えありません。 その代わりに、 >g.DrawString(txtShortText.Text, myFont, myForeBrush, 0, 0) の最後の2つの引数に座標を指定します。 g.DrawString(txtShortText.Text, myFont, myForeBrush, 5, 5) なら、座標(5, 5)に表示するという具合ですね。(原点(0,0)は左上です) ちょっと調べてみただけですが、以下のサイトがEdwardさんの知りたいことの 説明になっていそうな気がします。 http://www.nextftp.com/swlabo/m1_vbnet/tips2005/2_graphics/g0307.htm Matrixクラスに関連する情報は「アフィン変換」で検索すると 原理的な話が調べられると思います。 |