Форум: "Основная";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
ВнизНестандартные формы Найти похожие ветки
← →
UDS (2003-03-05 18:05) [0]Как сделать нестандартное в фигурном отношении окно программы? Точнее как сделать форму прозрачной под ВМР-оболочкой лежащей на ней...(Может чо не так сказал...)
← →
UDS (2003-03-05 18:27) [1]???
← →
UDS (2003-03-05 18:37) [2]Может кто-то все таки знает?
← →
Palladin (2003-03-05 18:52) [3]может стоит проанализировать "BMP оболочку" на предмет регионов и строить форму формы исходя из полученых данных?
правда этот метод "строить форму формы" не подойдет если тебе прозачность нужна не полная...
← →
Rouse_ (2003-03-05 18:54) [4]Через регионы, кажется даже в FAQ есть
Желаю успехов
← →
UDS (2003-03-05 19:00) [5]Увы, не сталкивался раньше...
Где нить простенького примера нет? или процесс ...поподробнее..
← →
Palladin (2003-03-05 19:10) [6]процесс тебе уже описали...
если прозрачность нужна не полная то тоже есть выход
построить форму с нужной прозрачностью... и поверх наложить построеную при помощи регионов
← →
Rouse_ (2003-03-05 19:14) [7]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function CreateRgnFromBitmap(rgnBitmap: TBitmap): HRGN;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.CreateRgnFromBitmap(rgnBitmap: TBitmap): HRGN;
var
transColor: TColor;
i, j: Integer;
width, height: Integer;
left, right: Integer;
rectRgn: HRGN;
begin
Result := 0;
width := rgnBitmap.Width;
height := rgnBitmap.Height;
transColor := rgnBitmap.Canvas.Pixels[width - 1, height - 1];
for i := 0 to height - 1 do
begin
left := -1;
for j := 0 to width - 1 do
begin
if left < 0 then
begin
if rgnBitmap.Canvas.Pixels[j, i] <> transColor then
left := j;
end
else
if rgnBitmap.Canvas.Pixels[j, i] = transColor then
begin
right := j;
rectRgn := CreateRectRgn(left, i, right, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
left := -1;
end;
end;
if left >= 0 then
begin
rectRgn := CreateRectRgn(left, i, width, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var b:TBitmap;
n:HRGN;
begin
b:= TBitmap.Create;
b.LoadFromFile("c:\1.bmp");
n:= CreateRgnFromBitmap(b);
SetWindowRgn(Form1.Handle,n,True);
end;
end.
Нужно создать файл 1.bmp и на белом фоне нарисовать черную фигуру. Какова фигура такой и будет форма
Желаю успехов
← →
Intell (2003-03-05 19:29) [8]могу подсказать интересный вариант - поищи в инете Globus VCL Extention Library (GVCL) 2.79. Огромный склад компонентов. Среди них есть GLHoleShape - делает дыры на форме или накладывает скины.
Могу помочь в поисках - на сайте http://www.rxlib.ru/Downl/Downl.htm есть ссылка на GLOBUS VCL Extensions Library (GVCL) for Delphi & C++ Builder
Называется ссылка - Библиотека компонентов GVCL. Нажмёшь САЙТ и качай
Если найдёш то сообщи мне, я пришлю тебе исправленый вариант GLHoleShape (я нашёл в нём пару косяков).
Удачи, надеюсь помог.
По поводу исправленного компонента обращайся:
sergein@nojabrsk.ru
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c