C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 音符の描画について!


(過去ログ 44 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■23269 / inTopicNo.1)  音符の描画について!
  
□投稿者/ 小林 (1回)-(2008/08/12(Tue) 11:16:19)

分類:[C#] 

今、音符の描画を行うプログラムを作成しているのですが、いきなり行き詰っています。
楕円の中心を基準にを45度位回転させたいのですが、中心座標の変更はどのようにしたらいいのでしょうか?
ご教授よろしくお願い致します。

private void Daen(int x, int y, PaintEventArgs e){
e.Graphics.DrawEllipse(Pens.Black, x, y, 20, 10);
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
e.Graphics.RotateTransform(45.0f);
Daen(100,100,e);
}

[環境:WinXP,VS2008]
引用返信 編集キー/
■23286 / inTopicNo.2)  Re[1]: 音符の描画について!
□投稿者/ もょもと (14回)-(2008/08/12(Tue) 11:56:47)
DrawEllipseでは傾いた楕円というものはできなさそうです。
数学的にはミッチェナーのアルゴリズムを応用すれば何とかなりそうではありますが…難しいですね。

あまり綺麗に描画はされなさそうですが、
普通に楕円を描き、それを角度回転して表示じゃ駄目でしょうか。
引用返信 編集キー/
■23290 / inTopicNo.3)  Re[1]: 音符の描画について!
□投稿者/ 魔界の仮面弁士 (807回)-(2008/08/12(Tue) 12:18:21)
No23269 (小林 さん) に返信
> 楕円の中心を基準にを45度位回転させたいのですが、中心座標の変更はどのようにしたらいいのでしょうか?

DrawEllipse って、中心点を基準にするのではなく、
楕円の左上座標を指定するのではありませんでしたっけ?

.DrawEllipse(Pens.Black, 100, 100, 20, 10); だとしたら、
中心点は 110, 105 あたりかな。


で、左上原点での回転後に TransformPoints するのも面倒なので、ここは
 e.Graphics.TranslateTransform(110, 105);
 e.Graphics.RotateTransform(45.0f);
 e.Graphics.DrawEllipse(Pens.Black, -15, -10, 20, 10);
という感じでどうでしょう。
引用返信 編集キー/
■23291 / inTopicNo.4)  Re[2]: 音符の描画について!
□投稿者/ やじゅ (531回)-(2008/08/12(Tue) 12:32:31)
やじゅ さんの Web サイト
2008/08/12(Tue) 12:33:54 編集(投稿者)

>■No23269 (小林 () に返信
>

追記:書いている間に魔界の仮面弁士さんに先こされちゃいましたね。

試してないけど、http://dobon.net/vb/bbs/log3-6/3062.html
参考にしてみると、こんな感じかな

任意角度の場合((10,5)を中心に45度回転して保存)
Dim myAngle As Single = 45
Dim myX As Integer = 10
Dim myY As Integer = 5

'回転操作
e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(myX, myY)
e.Graphics.RotateTransform(myAngle)
e.Graphics.TranslateTransform(-myX, -myY)
引用返信 編集キー/
■23298 / inTopicNo.5)  Re[1]: 音符の描画について!
□投稿者/ オショウ (34回)-(2008/08/12(Tue) 13:29:25)
> 今、音符の描画を行うプログラムを作成しているのですが、いきなり行き詰っています。
> 楕円の中心を基準にを45度位回転させたいのですが、中心座標の変更はどのようにしたらいいのでしょうか?
> ご教授よろしくお願い致します。

  本題から外れますが・・・

  音符分の画像を作って、その画像を描画する(張りつける)と
  言う風にして、手を抜きますが・・・

  メタファイルに音符を描画したものを作成すれば・・・
  あ!同じか・・・

  あくまで参考・・・

※ 暑くて、ぼ〜としてます。

以上。
引用返信 編集キー/
■23300 / inTopicNo.6)  Re[2]: 音符の描画について!
□投稿者/ 小林 (2回)-(2008/08/12(Tue) 13:54:26)
魔界の仮面弁士さん やじゅさん
この方法で一応描画できました。
DrawEllipse(Pens.Black, -15, -10, 50, 25);で 描画開始位置(-15,-10)の指定の指定が本当であればサイン、コサインで正確な座標を指定するのでしょうが、この場合45度回転させた後の図形を囲む四角形の左上の座標と言うことなのでしょうか。
 e.Graphics.TranslateTransform(110, 105);
 e.Graphics.RotateTransform(45.0f);
 e.Graphics.DrawEllipse(Pens.Black, -15, -10, 20, 10);
 e.Graphics.RotateTransform(-45.0f);
 e.Graphics.TranslateTransform(-110, -105);
いずれにせよやりたいことは出来ました。
ありがとうございました。
引用返信 編集キー/
■23337 / inTopicNo.7)  Re[2]: 音符の描画について!
□投稿者/ れい (729回)-(2008/08/12(Tue) 22:20:23)
No23298 (オショウ さん) に返信
>>今、音符の描画を行うプログラムを作成しているのですが、いきなり行き詰っています。
>>楕円の中心を基準にを45度位回転させたいのですが、中心座標の変更はどのようにしたらいいのでしょうか?
>>ご教授よろしくお願い致します。

♪って楕円でいいのかしら?
引用返信 編集キー/
■23345 / inTopicNo.8)  Re[3]: 音符の描画について!
□投稿者/ オショウ (35回)-(2008/08/12(Tue) 23:15:57)
No23337 (れい さん) に返信
> ■No23298 (オショウ さん) に返信
> ♪って楕円でいいのかしら?

※ 本題から外れますが!

  見栄えにこだわりつつ、プログラムで実装するならば
  楕円かナ〜

  私の場合、過去、見栄えにこだわった顧客ばかりだったので
  絵を描くと言うプログラムだけでは、まかないきれなかった
  ので、実際にある大きさで物理的にビットマップの絵を描い
  て、その画像を『描く』ことで見栄えを維持しました。

  結局、最終、何を求めているかでしょう!

  プログラムで形を描画したいならば、楕円でなくても、曲線
  描画(3次元とか・・・)で描いて、中を塗りつぶすとか。

  音符自体の『絵』を描くプログラムに結構時間かけてしまっ
  て、その効果は?と言うことになるかもしれませんが。

以上。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -