Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сложные формы [D7, Win95/98]


Stype ©   (2004-08-30 09:01:00) 

Как создать форму со сложным контуром и с "дырками" посередине ?


O?O   (2004-09-06 09:02:00) [1]

Jedi - http://homepages.borland.com/jedi/jvcl/


O?O   (2004-09-06 09:00:00) [2]

Jedi - бесплатная библиотека компонентов, там есть компонента для создания дырок на форме и компонента делающая форму по образцу рисунка


Stype   (2004-09-05 13:24:00) [3]

Спасибо


ALS   (2004-08-31 16:33:00) [4]

>Где посмотреть?

http://web.ict.nsc.ru/~cancel/delphi/projects/getfile.php?i=44


antonn   (2004-08-31 16:18:00) [5]

BUPack поищи.


Stype   (2004-08-31 13:22:00) [6]

>Endi   (30.08.04 18:14) [4]
Где посмотреть?


Кирилл   (2004-08-30 18:48:00) [7]

а ещё можно так:
загружаешь в Image1 картинку и

Image1.Transparent := true;
Form1.BorderStyle := bsNone;
Form1.TransparentColorValue := GetSysColor(COLOR_BTNFACE);
Form1.TransparentColor := true;


Совсем просто!

Кроме того http://www.delphimaster.ru/cgi-bin/forum.pl?id=1093422967&n=0&from=1

У меня недавно было


antonn   (2004-08-30 18:28:00) [8]

Совсем недавно было, вроде...

function BitmapToRgn(Image: TBitmap): HRGN;
var
 TmpRgn: HRGN;
 x, y: integer;
 ConsecutivePixels: integer;
 CurrentPixel: TColor;
 CreatedRgns: integer;
 CurrentColor: TColor;
begin
 CreatedRgns := 0;
 Result := CreateRectRgn(0, 0, Image.Width, Image.Height);
 inc(CreatedRgns);

 if (Image.Width = 0) or (Image.Height = 0) then
   exit;

 for y := 0 to Image.Height - 1 do
 begin
   CurrentColor := Image.Canvas.Pixels[0,y];
   ConsecutivePixels := 1;
   for x := 0 to Image.Width - 1 do
   begin
     CurrentPixel := Image.Canvas.Pixels[x,y];

     if CurrentColor = CurrentPixel then
       inc(ConsecutivePixels)
     else
     begin
       // ?????? ? ????? ????
       if CurrentColor = clWhite then
       begin
         TmpRgn := CreateRectRgn(x-ConsecutivePixels, y, x, y+1);
         CombineRgn(Result, Result, TmpRgn, RGN_DIFF);
         inc(CreatedRgns);
         DeleteObject(TmpRgn);
       end;
       CurrentColor := CurrentPixel;
       ConsecutivePixels := 1;
     end;
   end;

   if (CurrentColor = clWhite) and (ConsecutivePixels > 0) then
   begin
     TmpRgn := CreateRectRgn(x-ConsecutivePixels, y, x, y+1);
     CombineRgn(Result, Result, TmpRgn, RGN_DIFF);
     inc(CreatedRgns);
     DeleteObject(TmpRgn);
   end;
 end;
end;

Применение: Суешь в image1 картинку, все белые места вырезаются.
вызов
SetWindowRgn(Handle,BitmapToRgn (image1.Picture.Bitmap) , true);


Rem   (2004-08-30 18:24:00) [9]

[4]

 Точно-точно! Нужны специальные компоненты! А лучше - готовые проекты! :))

 А что, TForm.TransparentColor кто-то отменял?


Endi   (2004-08-30 18:14:00) [10]

Проще всего, посмотри стороние компоненты для создания форм с контурами по определенным картинкам.


Ozone   (2004-08-30 09:39:00) [11]

LOL


BillyJeans   (2004-08-30 09:29:00) [12]

форма с дырками, это в second hand :)


KADAN   (2004-08-30 09:11:00) [13]

CreateВсякоРазныеRgn и CombineRgn особенно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо