名前 題名 ▼ KSCさん > KSCです。 > > 印刷プレビュー制御コンポーネントに画像を表示させる際に > StretchDrawBitmapやStretchDrawPictのように描画範囲を指定して > 縮小・拡大して表示するメソットがありますが、 > > これを使用する際に当然、描画範囲を指定するのですが、 > 指定した画像ファイルの大きさを指定したい場合、 > どのようにすれば良いのでしょうか? > > // ICO->BMP変換 > procedure ICOToBMP(var BMP: TBitmap; fname: String); > var > Ico :TIcon; > begin > Ico :=TIcon.Create; > BMP.PixelFormat := pf24bit; > try > BMP.Width := GetSystemMetrics( SM_CXICON ); > BMP.Height := GetSystemMetrics( SM_CYICON ); > Ico.LoadFromFile( fname ); > DrawIconEx(BMP.Canvas.Handle, 0, 0, Ico.Handle, 0, 0, 0, 0, 3); > finally > Ico.Free; > end; > end; > > // JPG->BMP変換 > procedure JpegToBmp(var BMP: TBitmap; fname: String); > var > Jpeg: TJpegImage; > begin > Jpeg := TJpegImage.Create; > try > Jpeg.LoadFromFile( fname ); > BMP.Assign( Jpeg ); > finally > Jpeg.Free; > end; > end; > > procedure GetPrinterDPI(var x, y: Integer); > begin > x := GetDeviceCaps( Canvas.Handle, LOGPIXELSX ); > y := GetDeviceCaps( Canvas.Handle, LOGPIXELSY ); > end; > > procedure ImageDisp(Sender: TObject; fname: string; var w, h: Integer); > var > x, y: Integer; > str: string; > bmp: TBitmap; > begin > w := 0; h := 0; > > GetPrinterDPI(x, y); > > bmp :=TBitmap.Create; > try > str := UpperCase( ExtractFileExt( fname ) ); > > if str = '.BMP' then > bmp.LoadFromFile( fname ) > else > if str = '.ICO' then > ICOToBMP(bmp, fname) // ICO->BMP変換 > else > if str = '.JPG' then > JpegToBmp(bmp, fname) // JPG->BMP変換 > else > bmp := nil; > > if Assigned( bmp ) then begin > w := bmp.Width * 25.4 / x; > h := bmp.Height * 25.4 / y; > end; > finally > bmp.Free; > end; > end; > > のようなソースで、取得しようとしたのですが正確にサイズ取得できません。 > > ご指導願えないでしょうか? > > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link