Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.02.06;
Скачать: [xml.tar.bz2];

Вниз

Прорисовка формы   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.003 c
15-1287692941
Юрий
2010-10-22 00:29
2011.02.06
С днем рождения ! 22 октября 2010 пятница


15-1288166553
DVM
2010-10-27 12:02
2011.02.06
Опять перепись 2010


15-1287856169
Кто б сомневался
2010-10-23 21:49
2011.02.06
Помогите перевести


15-1288297735
Юрий
2010-10-29 00:28
2011.02.06
С днем рождения ! 29 октября 2010 пятница


3-1251976429
kyn66
2009-09-03 15:13
2011.02.06
После обновления компонентов ADS - ошибка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский