DOBON.NETプログラミング道掲示板

■35612 / 1階層)  ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ 魔界の仮面弁士 大御所(1573回)-(2024/06/07(Fri) 14:13:32)
  • アイコンNo35611に返信(よっし〜さんの記事)
    >「Dim Img As Image = My.Computer.Clipboard.GetImage()」
    > すると背景が真っ黒になります。

    CF_BITMAP が取得されたためでしょう。
    取得フォーマットの問題ですね。


    たとえば、下記を Edge からコピーしてみた場合、
    クリップボードには 6 種類のデータが保持されました。
    https://ascii.jp/img/2021/04/11/3186022/l/33f2a9acb9788a6d.png

    CF_PNG ("PNG") ⇒ 透過のPNG画像(460x460)
    CF_DIBV5 (17) ⇒ 黒背景のデバイス非依存ビットマップ(460x460)
    CF_HTML ("HTML Format") ⇒ img タグ入りのHTML(終端nullあり、CRLF改行)
    ("Chromium internal source URL") ⇒ URL文字列(終端nullあり、改行なし)
    CF_BITMAP (2) ⇒ ビットマップハンドル (HBITMAP)
    CF_DIB (8) ⇒ 黒背景のデバイス非依存ビットマップ(460x460)

    ということで修正案。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim c = Clipboard.GetDataObject()
      Dim img As Image = Nothing
      If c.GetDataPresent("PNG", False) Then
        Dim o = TryCast(c.GetData("PNG"), System.IO.MemoryStream)
        If o IsNot Nothing Then
          img = Image.FromStream(o)
        End If
      ElseIf c.GetDataPresent(GetType(Image)) Then
        img = DirectCast(c.GetData(GetType(Image)), Image)
      End If
      PictureBox1.Image = img
    End Sub
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←ブラウザでコピーした透過PNGを貼り付けたい /よっし〜 →Re[2]: ブラウザでコピーした透過PNGを貼り付けたい /よっし〜
 
上記関連ツリー

Nomalアイコン ブラウザでコピーした透過PNGを貼り付けたい / よっし〜 (24/06/07(Fri) 12:18) #35611
Nomalアイコン ブラウザでコピーした透過PNGを貼り付けたい / 魔界の仮面弁士 (24/06/07(Fri) 14:13) #35612 ←Now
  └Nomalアイコン Re[2]: ブラウザでコピーした透過PNGを貼り付けたい / よっし〜 (24/06/07(Fri) 15:14) #35613
    └Nomalアイコン Re[3]: ブラウザでコピーした透過PNGを貼り付けたい / 魔界の仮面弁士 (24/06/07(Fri) 16:11) #35614
      └Nomalアイコン Re[4]: ブラウザでコピーした透過PNGを貼り付けたい / よっし〜 (24/06/07(Fri) 17:36) #35615 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -