tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル指定した色を透明色として、全体を半透明での画像の表示
記事No5287
投稿日: 2007/04/04(Wed) 23:02
投稿者なゆた
WinXP + VB2005

指定した色を透明色、全体を半透明と個別にはできたのですが
両方をあわせるとうまくいきません
よい方法はないでしょうか?

[ツリー表示へ]
タイトルRe: 指定した色を透明色として、全体を半透明での画像の表示
記事No5288
投稿日: 2007/04/04(Wed) 23:29
投稿者魔界の仮面弁士
> WinXP + VB2005
> 指定した色を透明色、全体を半透明と個別にはできたのですが
> 両方をあわせるとうまくいきません

状況に関する説明がないので、何の話なのか分かりません…。


もしかして、半透明なフォームを作ろうとしているのでしょうか?
もし、TransparencyKey / Opacity プロパティを使おうとしているのであれば、
現在のレイヤード ウィンドウの仕様上、同時に指定しても動作しません。
半透明のフォームの形状を変える(くり抜く)必要があるのであれば、
Region プロパティで、ウィンドウのリージョンを変更して対応してみてください。

[ツリー表示へ]
タイトルRe^2: 指定した色を透明色として、全体を半透明での画像の表示
記事No5292
投稿日: 2007/04/05(Thu) 23:26
投稿者なゆた
説明が悪かったですね。

ピクチャボックスにビットマップを表示するときに
例えば、白を透過色にして、
尚且つビットマップ全体を半透明にしたいのです。

        Dim bmp As Bitmap = New Bitmap("c:\00aq4.bmp")
        Dim g As Graphics
          'Graphics オブジェクトを作成
        g = PictureBox1.CreateGraphics
         'ビットマップの透明色を指定
        bmp.MakeTransparent(Color.White)

        ' ビットマップ内のすべてのピクセルに共通する透過度を定義します。
        Dim transparency As Single = 0.5
        ' (4,4)の位置に透過値がある5x5の行列を作成します。
        Dim values()() As Single = {New Single() {1, 0, 0, 0, 0}, _
            New Single() {0, 1, 0, 0, 0}, _
            New Single() {0, 0, 1, 0, 0}, _
            New Single() {0, 0, 0, transparency, 0}, _
            New Single() {0, 0, 0, 0, 1}}
        ' 行列を使用して、新しいColorMatrixオブジェクトを初期化します。
        Dim colMatrix As New ColorMatrix(values)
        ' ImageAttributesオブジェクトを作成して、その色の行列を割り当てます。
        Dim imageAttr As New ImageAttributes()
        imageAttr.SetColorMatrix(colMatrix, ColorMatrixFlag.Default, _
            ColorAdjustType.Bitmap)

        '' 指定したImageAttributesオブジェクトを使用して、ビットマップを描画します。
        'g.DrawImage(bmp, New ,Rectangle(200, 20, bmp.Width, bmp.Height) _
        '    0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, imageAttr)
        ''指定した位置にImage オブジェクトを描画
        g.DrawImage(bmp, 0, 0)
        'リソースを解放します
        g.Dispose()
        bmp.Dispose()

半透明になってくれません。

[ツリー表示へ]
タイトルRe^3: 指定した色を透明色として、全体を半透明での画像の表示
記事No5295
投稿日: 2007/04/06(Fri) 09:39
投稿者魔界の仮面弁士
> 説明が悪かったですね。
(^_^;)

> 例えば、白を透過色にして、
> 尚且つビットマップ全体を半透明にしたいのです。
あれ? 当方では、提示されたコードをそのまま利用して
Bitmap.MakeTransparent(Color) の背景透過処理を行ってから
Graphics.DrawImage(Image, Rectangle, Integer, Integer, Integer, Integer, GraphicsUnit, ImageAttributes)
をそのまま適用したら、問題無く描画されましたが…。

[ツリー表示へ]
タイトルRe^4: 指定した色を透明色として、全体を半透明での画像の表示
記事No5301
投稿日: 2007/04/07(Sat) 01:07
投稿者なゆた
いろいろ試したところ、問題は別のところにありました。
一部間違った部分があったのと
フォームを透過しているのですが、そこの設定の仕方で、半透明にならなかったみたいです。
魔界の仮面弁士様、お付き合いしていただきありがとうございました。
解決です。

[ツリー表示へ]