Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

Создание рисованной программы.   Найти похожие ветки 

 
Iron Maiden   (2003-09-28 16:50) [0]

Здравствуйте! Я создаю программу с рисованным интерфейсом. Для этого делаю у формы BorderStyle:=bsNone, а потом рисую на ней, что хочу. Но у такой формы нельзя изменять размер. Можно ли обойти эту неприятность? Спасибо.


 
Song ©   (2003-09-28 17:09) [1]

Поищи по слову SC_DRAGMOVE. Однако при растяжке компонента, раз ты сам его перерисовываешь, ты должен предусмотреть, чтобы твой интерфейс также рисовался корректно.


 
(3223)jab   (2003-09-29 16:41) [2]

Ну я так понял тебе хотелось бы намутить своё окно под свою картинку? Там типа с отверстиями и т.п. Тогда тебе нужно с регионами поработать:

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

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);
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);
DeleteObject(TmpRgn);
end;
end;
end;

добавил функцию??? Если да то теперь мутим дальше...

procedure TForm1.FormCreate(Sender: TObject);
var
sd: tstringList;
reg: TRegistry;
o: boolean;
MyRGN : HRGN;
b: TBitmap;
begin
b:=TBitmap.Create;
b.LoadFromResourceName(hInstance,"bit");
//LoadFromFile(ExtractFilePath(ParamStr(1))+"bit.bmp");
form1.Width:=b.Width; form1.Height:=b.Height;
MyRGN := BitmapToRgn(b);
b.free;
SetWindowRgn(Handle, MyRGN, True);
DeleteObject(MyRGN);
end;

Ну типа теперь ты можеш менять скины к своей форме :):):)
Файл "bit.bmp" - это типа маска окна.... там черный цвет будет виден в виде формы, а остальные цвета будут прозрачными... Типа удачи!


 
Iron Maiden   (2003-09-29 18:23) [3]

Спасибо, сейчас попробую.


 
Iron Maiden   (2003-09-30 16:12) [4]

(3223)jab,
Как я понял, эта процедура помогает создавать форму любой формы :). Но мне этого, вобщем-то не требуется, хотя тоже спасибо. Получается, что заголовок формы можно как бы зарисовать? Это мне не восем подходит, и вот почему:
В этом случае у формы остаются бордюры (которые вобщем-то тоже можно зарисовать), а когда формы передвигаешь высвецивается её истинный размер.
Нельзя ли сделать, как я хотел, форму с bsNone, но только чтобы у неё можно было размер менять? Или всё же делать, как вы предложили?


 
Rem ©   (2003-09-30 19:27) [5]

Попробуй в событии на нажатие мыши

ReleaseCapture;
Perform(WM_SYSCOMMAND, $f012, 0);

Отсяда и пляши. Определяй, в каком районе нажата мышь (район бордюра), и отсылай события. А уж коды $f012 и ему подобные сам подбирай... у меня где-то было, но влом искать. Попробуй коды в диапазоне от $f000 до $f02a.


 
Rem ©   (2003-09-30 19:32) [6]

2 (3223)jab
Удалять регион нельзя.

After a successful call to SetWindowRgn, the operating system owns the region specified by the region handle hRgn. The operating system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not close this region handle.



Страницы: 1 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
7-79204
MAPIIIAJL
2003-09-12 10:22
2003.11.24
Виртуальный COM порт


14-79130
Knight
2003-10-31 20:52
2003.11.24
ИМХО...


1-78920
Rradion
2003-11-12 14:33
2003.11.24
Алгоритм Бинарного Поиска - помогите плиз...


14-79157
alxx
2003-10-31 11:04
2003.11.24
Быстрая графика в Delphi


4-79228
o2
2003-09-27 13:24
2003.11.24
Фокус окон и компонентов