###C# PictureBox子要素のOnPaintBackgroundについて
現在C#でドロー系ソフトを作成しています。
開発環境:Win10 visualsturio2012 WindowsForm .net3.5 です。
アプリの概要はピクチャボックス内に、図形要素やテキスト要素をもつコントロールを配置していく感じです。追加するコントロール自体はPictureBoxを継承しています。
↓
現在問題になっているのが、多角形などの要素には透明な背景部分の処理の必要があるため、
以下のサイトを参考にして、OnPaintBackGroundをオーバーライドした関数を使用しています。
http://mitsu.three-atmarks.com/archives/10696
###問題としていること
「ピクチャボックスをクリックする」と
追加したコントロール要素すべてで「OnPaintBackground」が呼び出されてしてしまうことです。
実際には200~300程の点数を追加するため、一度のクリックしただけでかなりの数のビットマップを作成することになり、処理が非常に重くなっています。
###試したこと
1.クリック時にフラグ立てる。OnPaintBackgroundをオーバーライドして、何もしない
protected override void OnPaintBackground(PaintEventArgs pevent) { // ??ピクチャボックスクリックなら何もしない if(flag) return; base.OnPaintBackground(pevent); // 以下背面を描画する処理が続く... }
自分の中ではこれで解決したと思っていたのですが...(泣)
少なくともこの関数が呼び出された以上はbase.OnPaintBackground(pevent)を呼び出さないと、描画が正しくできません。
しかし、baseの方を呼び出してしまうと、結局背後のコントロールを描画する処理が必要になって処理が重くなってしまいます。
もう、どうしたらいいのか..._| ̄|○
###聞きたいこと
わたしは仕事で殆どc言語しか使ったことがないので、ドローソフトのようなイベントを多用するアプリをつくるのは初めてです。
クリックされても、OnPaintBackgroundを呼び出さないとか、そのような処理はできるのでしょうか...?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/20 07:07