[delphi] как вырезать картинку?
procedure TForm1.Button1Click(Sender: TObject);
var
Pic, // Исходная картинка
Fragment // Копируемый фрагмент
: TBitmap;
Region1, // Границы фрагмента
Region2 // "принимающая область"
: TRect;
begin
// Создаём картинки
Pic:=TBitmap.Create;
Fragment:=TBitmap.Create;
// Загружаем из файла
Pic.LoadFromFile('a.bmp');
// рисуем на форме первую картинку
Image1.Canvas.Draw(0,0,Pic);
Fragment.Width := Image2.Width;
Fragment.Height := Image2.Height;
// задаём диапазоны копирования
Region1:= Rect(10,10,150,50);
Region2:= Rect(10,20,150,70);
// копируем фрагмент
Fragment.Canvas.CopyRect(Region2, Pic.Canvas , Region1);
// задаём цвет, толщину и заливку для эллипса
Fragment.Canvas.Pen.Color := clRed;
Fragment.Canvas.Pen.Width := 5;
Fragment.Canvas.Brush.Style:= bsClear;
// рисуем эллипс
Fragment.Canvas.Ellipse(0,0,80,100);
// рисуем модифицированный фрагмент на другом изображении
Image2.Canvas.Draw(0,0,Fragment);
Pic.Free;
Fragment.Free;
end;
Результат нажатия кнопки:
thx
а если у меня картинка в принципе довольно большая, я ее когда вывожу ужимаю по размерам
а мне надо вырезать соответсвующий размер в исходном битмапе
тебе надо ресайзнуть картинку? или вырезать фрагмент?
Как вырезать фрагмент я вроде показал - а ресайзить - это немного другая наука..
Чтобы карсиво и гладенько было надо применять всякие бикубические сплайны..
Description
This method draws Graphic to the printer canvas at the location (X,Y).
NOTE: Do not use Draw for bitmaps. Use PrintBitmap or PrintBitmapRect instead.
Description.
Call Draw to draw a graphic on the canvas. Draw calls the Draw method of the graphic. The image is rendered into a rectangle determined by the size of the graphic, with the upper left corner at the point (X, Y).
Graphics can be bitmaps, icons, or metafiles. If the graphic is a TBitmap object, the bitmap is rendered using the value of CopyMode.
Delphi 7 Professional
противоречиво как-то
или я че-то не понял?
Draw обеспечивает функциональность и абстракцию.
PrintBitmap обеспечивает производительность и... и производительность!
Может, абстрактность для Draw появилась только в седьмых?
Оставить комментарий
kozicin
задача такаяесть картинка, нужно как-то вырезать кусок прямоугольный из этой картинки и дальше уже работать с ней
delphi я тока начал изучать, так-что плиз поподробней