DOBON.NET DOBON.NETプログラミング掲示板過去ログ

線の消去

  • 題名: 線の消去
  • 著者: タカ
  • 日時: 2005/06/01 17:36:18
  • ID: 11066
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[環境(Windows2000,XP)、使用言語(VC++)]
分類:[.NET]

Windowに線を引き、線の編集をしたいのですが、
編集に必要な計算→全画面消去→再描画
という流れで、プログラムを作りました。
しかし、マウスを動かしながら作業をすると、
時間がかかり過ぎてしまいます。
これ以外に何かいい方法はありませんか?
  • 題名: Re[1]: 線の消去
  • 著者: はいこーん
  • 日時: 2005/06/01 18:50:12
  • ID: 11067
  • この記事の返信元:
  • この記事への返信:
  • ツリーを表示
■No11066に返信(タカさんの記事)
> 編集に必要な計算→全画面消去→再描画
ふつーは、必要な部分だけ消して再描画。
  • 題名: Re[2]: 線の消去
  • 著者: ガッ
  • 日時: 2005/06/02 9:38:36
  • ID: 11072
  • この記事の返信元:
  • この記事への返信:
  • ツリーを表示
■No11067に返信(はいこーんさんの記事)
> ■No11066に返信(タカさんの記事)
>>編集に必要な計算→全画面消去→再描画
> ふつーは、必要な部分だけ消して再描画。
コレはー…前スレから続きですかね…?
前スレ:
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=10946&rev=&no=0
■No11072に返信(ガッさんの記事)
> コレはー…前スレから続きですかね…?
おー、前スレでも同じこと言われてる・・・
■No11073に返信(はいこーんさんの記事)
> ■No11072に返信(ガッさんの記事)
>>コレはー…前スレから続きですかね…?
> おー、前スレでも同じこと言われてる・・・

前レスの続きです。
全画面消去→再描画
という流れはやめました。
不必要な線の消去はできましたが、
表示したビットマップをどのように消去したらいいかが分かりません。
教えてください。
説明が悪かったらすみません。ちょっと時間がないので。。

線を引くだけのコントロールを作成しては?
(1)LabelなどのコントロールでTransparentを設定
(2)OnPaintでラインを引く
(3)サイズ変更で線の再描画

そのコントロールのVisibleをFalseにすれば線は消えたようにみえますね。
ただし描画しているBMPはBackGroundImageに描かれていることが条件です。
一回引いた線を変更するとしたら、複数の線コントロールを扱うことはたぶんできません。

またボタンなどコントロールが今回提案したコントロールの下にあるとそのコントロールが透けてしまいます。

似たようなプログラムを作っていますが、要件によって方法は変わると思われます。具体的にどうゆうプログラムをお作りでしょうか。
マウスでフリーハンドで引いた線をプログラムで滑らかな曲線に書き直し、
その線をマウスを使って、編集できるようにしたいのです。
ウィンドウに書かれた線やビットマップを編集したいのです。
全画面消去→再描画
という流れでプログラムを作ると、時間がかかり過ぎてしまいます。
これ以外で、もっと早く再描画できるプログラムを考えていますが、
いいアイデアが浮かびません。
もし、いいアイデアがありましたら、教えてください。
内容が大きそうですね。
線のためのコントロールが確実に必要です。
試してはいませんが、ラベルなどのコントロールをInheritsし、背景を透明に設定して、オーナードローで描くしかないと思います。
BMPについてもBMP用のコントロールをBMPごとに持つ必要があると思います。

背景が透明なコントロールについては
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtskgivingyourcontroltransparentbackground.asp
などがあります。

全体の再描画のチラツキが気になるのでしたら DoubleBufferingで組まれて見てはいかがでしょうか。
  • 題名: Re[8]: 線の消去
  • 著者: タカ
  • 日時: 2005/06/02 16:45:28
  • ID: 11091
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No11087に返信(かつどんさんの記事)
> 内容が大きそうですね。
> 線のためのコントロールが確実に必要です。
> 試してはいませんが、ラベルなどのコントロールをInheritsし、背景を透明に設定して、オーナードローで描くしかないと思います。
> BMPについてもBMP用のコントロールをBMPごとに持つ必要があると思います。
>
> 背景が透明なコントロールについては
> http://www.microsoft.com/japan/msdn/library/default.aspurl=/japan/msdn/library/ja/vbcon/html/vbtskgivingyourcontroltransparentbackground.asp
> などがあります。
>
> 全体の再描画のチラツキが気になるのでしたら DoubleBufferingで組まれて見てはいかがでしょうか。

かつどんさん。ありがとうございます。
試してみます!!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板