0

多数の画像をオーバーレイしたい(PNG、すべて同じサイズ、透明度あり)。これまでのところ、私のコードは次のとおりです。

    bg = New Bitmap(My.Resources.blue)
    g = Graphics.FromImage(bg)

    overlay = New Bitmap(tree.Image)
    g.DrawImage(overlay, 0, 0)

ここで、もう 1 つの画像をオーバーレイしたいと思いますが、これはテキスト ボックスからのユーザーの入力に基づいています。したがって、その画像を取得するには、ユーザーの入力を取得して、それぞれのリソース ファイルを取得する必要があります。

私は次のようにします:

Dim stream As IO.Stream = Nothing    
Dim path As String = Assembly.GetName().Name.ToString() + "." + inputbox.text + ".png"
stream = Assembly.GetManifestResourceStream(path)

そして、これは画像ストリームを正しく見つけます。

ここで、画像を重ねてみます。

    overlay = New Bitmap(stream)
    g.DrawImage(overlay, 0, 0)

ただし、このオーバーレイは機能していないようです。

私がこのようなことをした場合:

overlay = New Bitmap(My.Resources._5)
g.DrawImage(overlay, 0, 0)

オーバーレイは正しく機能します。

質問は次のとおりです。オーバーレイがストリームから機能しないのはなぜですか?

編集:オーバーレイは実際には機能することがわかりましたが、実際のサイズではなく拡大された画像をオーバーレイしているようです。これには何らかの理由がありますか?

4

1 に答える 1

0

私は同じ問題を抱えています-オーバーレイされている画像のDPIとオーバーレイされている画像のDPIに問題を追跡しました。これら 2 つの値を確認し、DrawImage を実行する前に変更してみてください

于 2010-01-06T09:42:32.200 に答える