名前 題名 ▼ おかぽんさん > ▼ Mr.XRAYさん > > しかし,BPL のコンポーネントのビットマップは取得できません. > が〜ん・・・ > > 近い環境ということで、Delphi6で試してみたのですが、以下のほぼ丸コピー > 動いています。 > なぜだろう? > > bplのフルパスを格納したEdit1: TEdit > EnumResourceNames でビットマップリソース名を列挙する ListBoxNames:TListBox > リソースビットマップを表示するImageRes: TImage > > var > hHandle: THandle; > hBmp: HBitmap; > tagBmp :tagBitmap; > newBmp: TBitmap; > memDC :HDC; > begin > if ListBoxNames.ItemIndex < 0 then begin > > end > else begin > //ロード > hHandle :=LoadLibrary(PChar(Edit1.Text)); > if hHandle <> 0 then begin > //Bitmapリソース検索 > hBmp := LoadImage(hHandle, MakeIntResource(PChar(ListBoxNames.Items[ListBoxNames.ItemIndex])), IMAGE_BITMAP, > 0, 0, 0); > try > if hBmp <> 0 then begin > > //ビットマップ情報を取得 > GetObject(hBmp, Sizeof(tagBmp), @tagBmp); > newBmp := TBitmap.Create; > try > newBmp.Width := tagBmp.bmWidth; > newBmp.Height := tagBmp.bmHeight; > > //TBitmap互換のメモリデバイスコンテキストを生成 > memDC :=CreateCompatibleDC(newBmp.Canvas.Handle); > try > SelectObject(memDC, hBmp); > //ビットマップにコピー > BitBlt(newBmp.Canvas.Handle, 0, 0, tagBmp.bmWidth, tagBmp.bmHeight, > memDC, 0, 0, SRCCOPY); > //Imageにコピー > ImageRes.Picture.Bitmap.Assign(newBmp); > finally > DeleteDC(memDC); > end; > finally > newBmp.Free; > end; > end; > finally > DeleteObject(hBmp); > end; > //解放 > FreeLibrary(hHandle); > end; > end; > end; GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link