Текущий архив: 2011.02.06;
Скачать: CL | DM;
ВнизПрорисовка формы Найти похожие ветки
← →
v_a_belousov (2010-11-14 21:52) [0]Здравствуйте! Делаю нестандартную форму. Есть изображение и массив точек по которому создается полигон. Форма обрезается нормально и изображение тоже накладывается, но почему то вокруг него идет некая черная полоса... что то вроде рамки... не могу понять отчего эта рамка появляется и как от нее избавится. Подскажите пожалуйста.
// прорисовка формы
procedure TAuthForm.FormPaint(Sender: TObject);
var PRSkin: TPRSBSkin; SRegion: LongWord; i: integer;
begin
//создаем класс скина
PRSkin := TPRSBSkin.Create;
//загружаем скин из файла
PRSkin.LoadSkinFromFile("C:\Documents and Settings\Владимир\Рабочий стол\bumaga20.prsbs");
//создаем bitmap
AuthForm.Canvas.Brush.Bitmap := TBitmap.Create;
//перебираем ригионы
for i:=0 to PRSkin.RegionCount-1 do
begin
//создаем регион по точкам
SRegion := CreatePolygonRgn(PRSkin.SkinRegions[i].Points[0], Length(PRSkin.SkinRegions[i].Points), ALTERNATE);
//совмещаем регионы
CombineRgn(SRegion, SRegion, PRSkin.SkinRegions[i].Region, RGN_OR);
//задаем чем будем рисовать
AuthForm.Canvas.Brush.Bitmap := PRSkin.SkinRegions[i].Bitmap;
//рисуем
Polygon(AuthForm.Canvas.Handle, PRSkin.SkinRegions[i].Points[0], Length(PRSkin.SkinRegions[i].Points));
end;
end;
---------------------------------- ПЕРВОЕ ПРИМЕНЕНИЕ ---------------
PRSkin.SetSkin("C:\Documents and Settings\Владимир\Рабочий стол\bumaga20.prsbs", AuthForm);
← →
v_a_belousov (2010-11-14 21:57) [1]Знаю что загружать скин надо до и переменная должна быть глобальной....
// процедура применения скина
procedure TPRSBSkin.SetSkin(FName: string; Form: TObject);
//переменные
var SRegion: longword;
i: integer; IMG: TImage;
begin
//если форма, то обращаемся к ней
if Form is TCustomForm then
with TCustomForm(Form) do
begin
//загружаем скин из файла
LoadSkinFromFile(FName);
//задаем высоту и ширину форме
Width := FSkinRegions[0].FBitmap.Width+100;
Height := FSkinRegions[0].FBitmap.Height+100;
//
IMG := TImage.Create(Owner);
//
IMG.Align := alClient;
//
InsertControl(IMG);
//создаем bitmap
Canvas.Brush.Bitmap := TBitmap.Create;
//перебираем регионы
for i:=0 to RegionCount-1 do
begin
//создаем регион по точкам
SRegion := CreatePolygonRgn(FSkinRegions[i].FPoints[0], Length(FSkinRegions[i].FPoints), ALTERNATE);
//совмещаем регионы
CombineRgn(SRegion, SRegion, FSkinRegions[i].FRegion, RGN_OR);
//выбираем чем рисовать
Canvas.Brush.Bitmap := FSkinRegions[i].Bitmap;
//рисуем
Polygon(Canvas.Handle, FSkinRegions[i].FPoints[0], Length(FSkinRegions[i].FPoints));
end;
//
BorderStyle := bsNone;
//
//применяем регион к форме
SetWindowRgn(Handle, SRegion, true);
end;
end;
← →
v_a_belousov (2010-11-15 00:52) [2]Разобрался сам) карандаш Pen забыл установить в psClear вот он рисовал мне рамку.
Страницы: 1 вся ветка
Текущий архив: 2011.02.06;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.003 c