Главная страница
    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.46 MB
Время: 0.008 c
14-54166
ProtoSoft
2003-02-28 02:36
2003.03.17
Во блин, а правда Россияне, что у Вас собираются МАТЮКИ сделать..


14-54206
Evgen_Iam
2003-03-03 07:49
2003.03.17
Проблемы с кодировкой при создание русского helpa


4-54381
sveloga
2003-01-23 13:19
2003.03.17
FindWindow


4-54368
waw
2003-01-22 17:50
2003.03.17
Как вывести стандартное окно свойства файла?


14-54290
sancho
2003-02-28 18:06
2003.03.17
Компьютер силён своей периферией. Или я не прав?





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