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

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

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

Re[8]: 図形の回転


(過去ログ 38 を表示中)

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

■19664 / inTopicNo.1)  図形の回転
  
□投稿者/ tanaka (81回)-(2008/05/27(Tue) 15:07:22)

分類:[C#] 

Graphicsクラスを使用して円の中に小さい円を幾つか描画して
Timerを使用してその小さい円を大きい円の中心点を軸に回転させたいのですが

【一部ソース例】
		static float kakudo;
		private void tmrMove_Tick(object sender, EventArgs e)
		{
			Graphics g = pnlTest.CreateGraphics();
			g.TranslateTransform(40, 40);
			
			g.RotateTransform(kakudo);
			g.DrawEllipse(Pens.Black, 20, 20, 10, 10);
			a += 30;
		}

この場合、中心点を軸に回転させることは出来ますが、移動前の場所に描画された円が
残ってしまうのですが、その部分だけ図形をクリアさせることは可能でしょうか。

引用返信 編集キー/
■19667 / inTopicNo.2)  Re[1]: 図形の回転
□投稿者/ επιστημη (1048回)-(2008/05/27(Tue) 15:35:51)
επιστημη さんの Web サイト
※ Timerのハンドラで直接描画すると、
たとえばフォームに他のフォームかぶせて取り除くと描いたもんが消えてるんちゃいます?

> その部分だけ図形をクリアさせることは可能でしょうか。

いったんマッシロにし、全部書き直した方がてっとり早くない?
上記※に繋がる提案なんですけども。

引用返信 編集キー/
■19672 / inTopicNo.3)  Re[2]: 図形の回転
□投稿者/ tanaka (82回)-(2008/05/27(Tue) 16:51:42)
No19667 (επιστημη さん) に返信
> ※ Timerのハンドラで直接描画すると、
> たとえばフォームに他のフォームかぶせて取り除くと描いたもんが消えてるんちゃいます?
>
>>その部分だけ図形をクリアさせることは可能でしょうか。
>
> いったんマッシロにし、全部書き直した方がてっとり早くない?
> 上記※に繋がる提案なんですけども。
>
確かにご指摘の通りにすると楽ではありますが、実際は図形の数が多いのでそのたびにクリアをさせるのは
あまり好ましくないのではと思うのですが。
もう少し検証してみます。

引用返信 編集キー/
■19674 / inTopicNo.4)  Re[3]: 図形の回転
□投稿者/ επιστημη (1049回)-(2008/05/27(Tue) 17:09:00)
επιστημη さんの Web サイト
> 実際は図形の数が多いのでそのたびにクリアをさせるのは
> あまり好ましくないのではと思うのですが。

「たとえばフォームに他のフォームかぶせて取り除くと描いたもんが消えてるんちゃいます?」
に対処するには、結局"全部描き直し"になりますよ?

引用返信 編集キー/
■19676 / inTopicNo.5)  Re[3]: 図形の回転
□投稿者/ επιστημη (1050回)-(2008/05/27(Tue) 17:12:31)
επιστημη さんの Web サイト
> 実際は図形の数が多いのでそのたびにクリアをさせるのは
> あまり好ましくないのではと思うのですが。

では "円を描いた透明パネル"を移動させるのではいかがでしょう。

引用返信 編集キー/
■19679 / inTopicNo.6)  Re[4]: 図形の回転
□投稿者/ tanaka (84回)-(2008/05/27(Tue) 17:18:34)
No19676 (επιστημη さん) に返信
>>実際は図形の数が多いのでそのたびにクリアをさせるのは
>>あまり好ましくないのではと思うのですが。
>
> では "円を描いた透明パネル"を移動させるのではいかがでしょう。
>
実は今パネルを使用した方法を検証しております。
この方法が一番いいかもしれません。
しばらく検証してみます。

引用返信 編集キー/
■19690 / inTopicNo.7)  Re[5]: 図形の回転
□投稿者/ Jitta on the way (96回)-(2008/05/27(Tue) 19:56:44)
ちぃとメモリが張りますが。

描画する図形のぶんだけ Graphics を用意して、貼り付けていくとか。
引用返信 編集キー/
■19693 / inTopicNo.8)  Re[4]: 図形の回転
□投稿者/ 渋木宏明(ひどり) (765回)-(2008/05/27(Tue) 20:58:36)
渋木宏明(ひどり) さんの Web サイト
> では "円を描いた透明パネル"を移動させるのではいかがでしょう。

Panel=子ウィンドウなので、うん千枚になってくるとツライです。(もっと少なくてもダメかも)

>描画する図形のぶんだけ Graphics を用意して、貼り付けていくとか。

Graphics じゃなくて、図形の分だけ Bitmap を用意するばおk。

Graphics は、図形を描画しなおす時と、合成画面用の Bitmap に描画する時だけ作れば十分です。

# だから、パネルやら PictureBox に直接描画するとややこしいことになるっちゅーのに。。。
引用返信 編集キー/
■19697 / inTopicNo.9)  Re[5]: 図形の回転
□投稿者/ 渋木宏明(ひどり) (766回)-(2008/05/27(Tue) 22:37:11)
渋木宏明(ひどり) さんの Web サイト
2008/05/27(Tue) 22:37:48 編集(投稿者)

> Graphics は、図形を描画しなおす時と、合成画面用の Bitmap に描画する時だけ作れば十分です。

こんな感じ。

http://cid-f11bb9fd8e1bc5f9.skydrive.live.com/self.aspx/Junktest/TestManyShapes.zip

1000 図形くらいではビクともしません。

引用返信 編集キー/
■19705 / inTopicNo.10)  Re[6]: 図形の回転
□投稿者/ 渋木宏明(ひどり) (767回)-(2008/05/28(Wed) 09:21:36)
渋木宏明(ひどり) さんの Web サイト
> こんな感じ。

個別にオフスクリーンを持たないバージョン。

http://cid-f11bb9fd8e1bc5f9.skydrive.live.com/self.aspx/Junktest/TestManyShapes2.zip
引用返信 編集キー/
■19743 / inTopicNo.11)  Re[7]: 図形の回転
□投稿者/ tanaka (85回)-(2008/05/29(Thu) 08:42:42)
No19705 (渋木宏明(ひどり) さん) に返信
>>こんな感じ。
>
> 個別にオフスクリーンを持たないバージョン。
>
> http://cid-f11bb9fd8e1bc5f9.skydrive.live.com/self.aspx/Junktest/TestManyShapes2.zip

ありがとうございます。
ただ残念ながらリンクにアクセス出来ない(フィルタリング)為
後でアクセスできる環境で参考にさせて頂きます。
引用返信 編集キー/
■19746 / inTopicNo.12)  Re[8]: 図形の回転
□投稿者/ 渋木宏明(ひどり) (768回)-(2008/05/29(Thu) 10:40:17)
渋木宏明(ひどり) さんの Web サイト
オノデラさんのブログエントリへのコメントでもひとくだり書いているので、参考にしてみてください。

Panel でチラつきなく図形をリアルタイム描画
http://blogs.wankuma.com/yo/archive/2008/05/27/139673.aspx
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -