プロが教える店舗&オフィスのセキュリティ対策術

タイトルのままで恐縮です。
ソースは、以下のような感じです。
描画の所で線を描いているのですが、例えば、SetBkModeなどで、背景を透過(TRANSPARENT)等は、やった事があるのですが、文字そのものの透過がわかりません。透過率は適当で構いません。ご存知の方、ご教授願います。
宜しくお願い致します。

(中略)

// 描画した線自体を透過させたいです。

CDC* dc; // 実際は、関数のパラメータです
//ペンの作成
CPen Pen;
CPen* pOldPen = NULL;
if ( Pen.CreatePen( PS_SOLID, 2, color ) == FALSE )
{
return false;
}
pOldPen = dc->SelectObject( &Pen );

// 描画(線を描く)
// widht, height は関数パラメータ
dc->MoveTo( x, y );
// この線を透過したい
dc->LineTo( x + width, x + height ) );
dc->MoveTo( x + width, y );
// この線を透過したい
dc->LineTo( x, y + height );
//ペンを元に戻す
dc->SelectObject( pOldPen );

A 回答 (1件)

文字そのものの透過というと、半透明で表示したいということでしょうか?


半透明で表示するには、メモリデバイスコンテキストに一旦出力してからアルファブレンディングをしなければなりません。

アルファブレンディング自体はAlphaBlend等の関数を使う方法や自前で実装するなどいろいろやり方がありますので、どれを選択するかは場合によります。

"メモリDC" や "アルファブレンディング" 等で検索してみるといいかと思います。
    • good
    • 0
この回答へのお礼

早々のご返事有難うございます。
アルファブレンディングキーワードを元にやり方を探してみたところ、CDCのメンバにAlphaBlend()という関数があり、その中の_BLENDFUNCTION構造体にSourceConstantAlphaという透過度を設定するメンバ変数がありました。

早速、試してみたところ無事、透過させることに成功致しました。
有難うございました。

お礼日時:2007/08/09 17:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!