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


Автор: CynicRus 22.6.2012, 09:18
Приветствую уважаемых форумчан. Есть TCanvas, на этом TCanvas - я рисую геометрическую фигуру. Как мне скопировать выделеный моей фигурой кусочек исходного изображения Canvas в Bitmap?

Автор: Alexeis 22.6.2012, 10:15
У битмапа есть свой канвас. Вот на него и нужно скопировать функцией CopyRect . Правда предварительно нужно будет указать корректные размеры для битмапа, такие чтобы выделенный фрагмент поместился. 

Автор: CynicRus 22.6.2012, 11:43
Возможно я туплю. Или неверно выразил мысль.
Вот у меня есть TCanvas. На этом TCanvas - есть некоторое изображение, на котором я рисую условный прямоугольник.
Код

Rectangle( x1, y1, x2, y2);

Мне известно, ширина и высота этого TCanvas, но - я категорически не могу врубиться, как мне скопировать тот участок изображения, который лежит внутри нарисованого мной прямоугольника.

Upd: Кажется я прозрел:

Код


function RectWidth(const A: TRect): Integer;
begin
  Result := A.Right - A.Left;
end;

function RectHeight(const A: TRect): Integer;
begin
  Result := A.Bottom - A.Top;
end;

function CopyCanvas(x,y: TPoint;Canvas: TCanvas): TBitmap;
var
Bitmap: TBitmap;
bw,bh:=integer;
Rect1,Rect2: Trect;
begin
Rect1:=Classes.Rect(x,y);
Canvas.Rectangle(Rect1.Left, Rect1.Top, Rect1.Right, Rect1.Bottom);
Bitmap:=TBitmap.Create();
Bitmap.Width:=RectWidth(Rect1);
Bitmap.Heigth:=RectHeigth(Rect1);
Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect,
  Canvas, Rect1);
result:=Bitmap;
end;

Спасибо-) 

PS: Поправьте, если я ошибаюсь.

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