Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.012 c
7-54348
БАА
2003-01-21 23:10
2003.03.17
О великий и могучий Com порт...


7-54328
ATC
2003-01-16 17:30
2003.03.17
Как сделать файл неперемещаемым на NTFS партиции?


1-54022
idz
2003-03-06 21:46
2003.03.17
Рисование на TImage


14-54228
Igor_thief
2003-02-28 19:19
2003.03.17
Как изменять размеры компонента мышкой?


3-53856
Eugie
2003-02-27 05:10
2003.03.17
TField компонента TIBQuery





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский