|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
GDI+ TGPImage и буфер обмена
Доброе время суток. У меня возникла проблема копирования/вставки изображений из буфера обмена в классы GDI+ (TGPImage и TGPBitmap).
Вот что примерно у меня получилось, но это по моему слишком громоздко: procedure TMainForm.LoadImage; Код:
var mstr: TMemoryStream; istr: IStream; bmp: TBitmap; begin CloseImage; mstr := TMemoryStream.Create; bmp := TBitmap.Create; try bmp.Assign(Clipboard); istr := TStreamAdapter.Create(mstr, soOwned) as IStream; bmp.SaveToStream(mstr); OriginalImg := TGPImage.Create(istr); PaintBox.Repaint; finally FreeAndNil(bmp); end; end; и вот еще: Код:
var g:IGPGraphics; b:TBitmap; j:TJPEGImage; dRect: TGPRectF; begin b := TBitmap.Create; b.Width := WidthSpEdt.Value; b.Height := HeightSpEdt.Value; j := TJPEGImage.Create; g := TGPGraphics.Create(b.Canvas.Handle); g.InterpolationMode := InterpolationModeHighQualityBicubic; dRect.Initialize(0,0, b.Width, b.Height); try g.DrawImage(OriginalImg, dRect); with j do begin CompressionQuality := 100; Performance := jpBestQuality; Scale := jsFullSize; PixelFormat := jf24Bit; Assign(b); Compress; end; Clipboard.Assign(j); PaintBox.Repaint; finally FreeAndNil(b); FreeAndNil(j); end; end Надеюсь кто нибудь придумает более оптимальное решение...? |