お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"Bitmapの描画例"

この発言に対し以下のコメントが寄せられています
#01045 snail さん RE:Bitmapの描画例

 たこなプリンタドライバではStretchDrawが使えないので,Forms.pasの PrintメソッドをまねしてStreatchDIBitsを使って描画します. Bitmap: TBimap; procedure TMyImage.Paint; var HBitmap: HBITMAP; pInfo: PBitmapInfo; InfoSize: Integer; pImage: Pointer; ImageSize: DWORD; begin if FAutosize then begin width:=(version*4+17)*FBarwidth+2; height:=width; end; Canvas.Lock; if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and RC_STRETCHDIB)<> 0 then begin HBitmap := Bitmap.Handle; GetDIBSizes(HBitmap, InfoSize, ImageSize); pImage := AllocMem(ImageSize); try pInfo := AllocMem(InfoSize); try GetDIB(HBitmap, 0, pInfo^, pImage^); StretchDIBits(Canvas.Handle, 0, 0, ClientWidth, ClientHeight, 0, 0, pInfo^.bmiHeader.biWidth, pInfo^.bmiHeader.biHeight, pImage, pInfo^, DIB_RGB_COLORS, SRCCOPY); finally FreeMem(pInfo, InfoSize); end; finally FreeMem(pImage, ImageSize); end; end else begin Canvas.StretchDraw(ClientRect, Bitmap) end; Canvas.UnLock; end;  CanvasにPrinterDC HandleがセットされていてもOKというわけ. TN(CQJ01721) Original document by TN 氏 ID:(CQJ01721)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum