Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.011 c
2-1289927150
Zoia Ziberman
2010-11-16 20:05
2011.02.06
Программа на Делфе


2-1289747895
Анонимус
2010-11-14 18:18
2011.02.06
Пара вопросов по Дэльфи 7


11-1229077921
sir tictactoe
2008-12-12 13:32
2011.02.06
не получается создать MCK-проект в BDS2006


2-1289696791
kiro
2010-11-14 04:06
2011.02.06
Запуск программы в консоле


6-1233781685
HITMAN
2009-02-05 00:08
2011.02.06
Удалённый рабочий стол.