Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизВписать рисунок в RoundRect Найти похожие ветки
← →
Alex_C (2012-03-05 12:12) [0]На канвасе нужно нарисовать RiundRect и вписать в него рисунок.
Делаю так:
procedure DrawRoundRect2Canvas(FromFastDIB: TFastDIB; ToCanvas: TCanvas;
Left, Top, Width, Height, R1, R2: integer; Alpha: Byte);
var
DestDIB, TmpBmp, BkgPic: TFastDIB;
y, x: integer;
Src, Dest: PLine24;
begin
if (Width < 5) or (Height < 5) then
Exit;
DestDIB := TFastDIB.Create;
// Устанавливаем конечный размер изображения
DestDIB.SetSize(Width, Height, FromFastDIB.Bpp);
// Копиреум изображение из исходного источника
SmoothResize(FromFastDIB, DestDIB, rfCatrom, nil, True);
// Вспомогательный FastDIB с нарисованным RoundRect
TmpBmp := FDIB_Create(Width, Height, FromFastDIB.Bpp);
TmpBmp.SetBrush(BS_SOLID, HS_HORIZONTAL, clWhite);
Windows.RoundRect(TmpBmp.hDC, 0, 0, Width, Height, R1, R2);
for y := 0 to TmpBmp.Height - 1 do
begin
Src := TmpBmp.ScanLines[y];
Dest := DestDIB.ScanLines[y];
for x := 0 to TmpBmp.Width - 1 do
begin
//если точка (x, y) на созданном Bitmap белая,
//то точку (x, y) на исходном Bitmap закрашиваем BackColor
if Src[x].r = 255 then
begin
// А вот здесь нужно рисовать на исходном канвасе ???
end;
end;
end;
DestDIB.Free;
TmpBmp.Free;
end;
Никак не соображу, как перейти к координатам канваса, на котором нужно рисовать?
← →
Андреевич (2012-03-05 15:14) [1]
dest[x]:=src[x];
вроде бы
← →
Омлет © (2012-03-05 22:02) [2]Как-то так: http://delphi-e.narod.ru/bmp_ellipse_cut.html
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.11 c