Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Работа с графикой


Автор: Mr.Floppy 31.8.2006, 01:07
Объясните, пожалуйста, как работать с графикой с помощью API.
  • Как сделать захват экрана? 
  • Можно ли сжать картинку по алгоритмам JPEG и PNG, пользуясь средствами Windows? (mspaint по крайней мере умеет smile )
Когда делал на VCL с использованием TBitmap был примерно такой код:
Код

uses PNGImage; //PNG support (http://pngdelphi.sourceforge.net/)
procedure GetScreenShot(hWnd: HWND);
var
  WP: TWindowPlacement;
  DC: TBitmap;
  procedure SaveToPNG(Source: TBitmap; Path: string; Compression: TCompressionLevel);
  var
    Png: TPNGObject;
  begin
    Png := TPNGObject.Create;
    Png.Assign(Source);
    Png.CompressionLevel := Compression;
    Png.SaveToFile(Path);
    Png.Free;
  end;
  procedure SaveToJpeg(Source: TBitmap; Path: string; Quality: TJPEGQualityRange);
  var
    Jpeg: TJpegImage;
  begin
    Jpeg := TJpegImage.Create;
    Jpeg.Assign(Source);
    Jpeg.CompressionQuality := Quality;
    Jpeg.SaveToFile(Path);
    Jpeg.Free;
  end;
begin
  GetWindowPlacement(hWnd,@WP);
  DC := TBitmap.Create;
  DC.Width := WP.rcNormalPosition.Right - WP.rcNormalPosition.Left;
  DC.Height := WP.rcNormalPosition.Bottom - WP.rcNormalPosition.Top;
  BitBlt(DC.Canvas.Handle,
        0,
        0,
        DC.Width,
        DC.Height,
        GetDC(GetDesktopWindow),
        WP.rcNormalPosition.Left,
        WP.rcNormalPosition.Top,
        SRCCopy);
  case Settings.Format of
    BMP: DC.SaveToFile(Path + '.bmp');
    PNG: SaveToPNG(DC, Path + '.png', Settings.PngCompression);
    JPG: SaveToJPEG(DC, Path + '.jpg', Settings.JpegQuality);
  end;
  DC.Free;
end;

Как можно это реализовать на WinAPI?

Автор: Alexeis 31.8.2006, 01:31
Mr.Floppy, Анологично, но вот вместо  TJpegImage и TPNGObject придется использовать GDI+

Автор: Mr.Floppy 30.9.2006, 16:33
А можно примерчик преобразования в PNG или JPEG? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)