AlphaBlendをもちいて線を半透明に描画したいのですが、わかりません – 固定ページ 2 – プログラミング – Home

AlphaBlendをもちいて線を半透...
 
通知
すべてクリア

[解決済] AlphaBlendをもちいて線を半透明に描画したいのですが、わかりません

固定ページ 2 / 2

TKO
 TKO
(@TKO)
ゲスト
結合: 15年前
投稿: 38
Topic starter  

返信ほんとうにありがとうございます

パワーポイント上に透明な線を引くことはできました。

しかし

マウスで線を引くとリアルタイムで透明な線が描画されるのですが
タブレットで線を引くと遅れて線が表示されます

これはDRAWLINEがタブレットの場合では計算処理に時間がかかるからでしょうか??

cretepenを用いてMoveToExと LineTo関数を使ってタブレットで線を引く場合は
線はリアルタイムに表示されます

それとも
プログラムを書き換えることによって
リアルタイムに線を描画することができますか??


返信引用
TKO
 TKO
(@TKO)
ゲスト
結合: 15年前
投稿: 38
Topic starter  

たびたびすいません
DRAWLINE関数は描画速度おそいですか??


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

えーと。

一般的に余計ない仕事をさせれば、遅くなる道理なので
単なるGDIとGDI+を比べたらmGDI+の方が遅いと思いますよ。
まあ、ハードウエアアクセラレータが利いているのかとか
色々な要素があると思うので一概には言えないかもしれませんが。

実際に御自分の環境で試して見てそうなるのであれば、
その環境ではそうなんでしょうとしか言えません。
ハードの環境によっては変わってくるかもしれませんけれど、
その環境で動かさない限り確かめようが有りません。

で、既に単純にGDI+を使っただけのプログラムで出来る事の範疇は
超えていると思うので高速化を考えるのであれば、
GDI+を使ったグラフィック描画に関する専門書等で勉強するとか
しないと無理なんじゃないかと思います。
ある程度、専門的な知識も要求されてくると思うので。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

あうあう。

わかると思いますが、

一般的に余計な仕事をさせれば、遅くなる道理なので
単なるGDIとGDI+を比べたらGDI+の方が遅いと思いますよ。

が正しいです。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

GDI+の方が多機能で扱いやすい分、GDIに比べて遅くなってるものが多いだろうし、
アルファ値なしでの描画よりアルファブレンドを適用した処理の方が
かなり重いだろうとは想像します。

とはいえ、そこまで劇的に重くなるもんですかね?
どのような環境でどのようなプログラムを実行しているのかわからないので
プログラム的に問題がないと言えるかどうかはわかりません。


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

いくつか気になる点
1:使用してるマウスとタブレットで入力速度はどのくらい差があるか
(タブレットのほうが反応がよすぎて描画が遅れるほど処理回数が発生してるのではな
いか?)
2:透明描画のときと、createpenで書いたときと、それ以外に処理方法に差はないか?

あと、おまけ
・ダブルバッファなどしてる場合、画面・クライアント領域全体よりも、
2点間を引いた線が入る領域だけを抜いて処理したほうが無駄が少なく早いです
位置計算しないといけないのが面倒だが、全体をコピーするよりゃはるかに早い


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

大昔にWinTabとWindows Tablet PC Editionを使用した経験で言うと
マウスに比べて、タブレットの方がストローク内の点の数が多いです。
これが原因で描画が遅くなる場合が考えられます。
回避するには、ストローク入力中の描画(リアルタイム描画)では
点数をある程度おろぬいて描画し、ストロークが完了したら、全点での
再描画を行うという方法があります。


返信引用
TKO
 TKO
(@TKO)
ゲスト
結合: 15年前
投稿: 38
Topic starter  

みなさん返信ありがとうございました

仲澤@失業者 さんの回答非常に参考になりましたありがとうございます


返信引用
TKO
 TKO
(@TKO)
ゲスト
結合: 15年前
投稿: 38
Topic starter  

ありがとうございました


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

既に本題とは関係ないところですが一つ訂正。

>subaru 2009/11/13(金) 10:47:43
>ちなみに描画内容は一時的なものですぐに壊れてしまうので
>仲澤さんの方法がましだと思いますが、複雑な図形を書く場合は
>リージョンの作成が面倒になります。

SetLayeredWindowAttributes関数の第4引数を
組み合わせて使えることを知りませんでした。
描画内容から半透明ウインドウを作る方法では
(複雑な)リージョンの作成は必要なかったみたいですm(_ _)m


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました