Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Вписать рисунок в 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.055 c
3-1282479566
larsp
2010-08-22 16:19
2013.03.22
Имеется приложение, работающее с FB через BDE.


2-1346616136
ankazh
2012-09-03 00:02
2013.03.22
Сводная таблица


2-1331468421
Димка На
2012-03-11 16:20
2013.03.22
Создать несколько экз. класса сразу.


15-1348518602
Юрий
2012-09-25 00:30
2013.03.22
С днем рождения ! 25 сентября 2012 вторник


2-1344332083
ramster
2012-08-07 13:34
2013.03.22
юникод DelphiXE