Главная страница
    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-54242
ROk
2003-02-28 10:57
2003.03.17
Синонимы


7-54327
Lex
2003-01-16 13:38
2003.03.17
Как узнать путь к Internet Explorer?


14-54299
Makhanev A.S.
2003-02-28 23:42
2003.03.17
Вот думаю, купить или нет....


14-54268
Darts
2003-02-28 12:29
2003.03.17
Перлы Буша Без комментариев.


14-54248
Roman Go
2003-02-28 10:31
2003.03.17
Укажите ссылку на какой нибудь учебник по MS SQL Server





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