Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Оформление интерфейса


Автор: Мебель 5.2.2005, 11:45
Привет всем!!!
Есть такая проблема:
Устанавливаю регионы для компонентов с помощью такой процедуры:

Код

procedure TForm1.CreateBWindow(AHWND: HWND; bitmap: TBitmap);
Var Back_Color: ColorRef;
   Wnd_Dc, Hdc_Bmp: HDC;
   Tmp_Rgn, Wnd_Rgn: HRGN;
   Width,Height, X, X0, Y: Integer;
begin
 Width := Bitmap.Width;
 Height := Bitmap.Height;
 Wnd_Dc := GetDC(AHWND);
 Hdc_Bmp := CreateCompatibleDC(Wnd_DC);
 SelectObject(Hdc_Bmp, Bitmap.Handle);
 Back_Color := GetPixel(Hdc_Bmp, 0, 0);
 Tmp_Rgn := CreateRectRgn(0, 0, 0, 0);
 Wnd_Rgn := CreateRectRgn(0, 0, 0, 0);
 x:=0;
 For y := 0 to Height - 1 Do
 begin
   While (x< Width - 1) Do
   begin
     While((GetPixel(Hdc_bmp, x, y) = Back_Color) and
     (x < Width)) do inc(x);
     If (x <> Width) Then
     begin
       X0 := X;
       While ((GetPixel(Hdc_Bmp, x, y) <> Back_Color) and (X < Width)) Do inc(x);
       Tmp_Rgn := createRectRgn(X0, Y, X, Y+1);
       CombineRgn(Wnd_Rgn, Wnd_Rgn, Tmp_Rgn, Rgn_XOR);
     end;
   end;
   X := 0;
 end;
 DeleteObject(Tmp_Rgn);
 DeleteDC(Hdc_Bmp);
 SetWindowRgn(AHWND, Wnd_Rgn, True);
 DeleteObject(Wnd_Rgn);
end;


Взываю ее так:

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
 CreateBWindow(Form1.BitBtn1.Handle, Image1.Picture.Bitmap);
 CreateBWindow(Form1.BitBtn2.Handle, Image2.Picture.Bitmap);
 CreateBWindow(Form1.BitBtn3.Handle, Image3.Picture.Bitmap);
 CreateBWindow(Form1.BitBtn4.Handle, Image4.Picture.Bitmap);
 CreateBWindow(Form1.BitBtn5.Handle, Image5.Picture.Bitmap);
end;

Все получается, кнопки получают заданный регион, становятся в форме изображения
из компонента TImage.
НО!!!
кнопки при этом становятся плоскими (не трех-мерными), из-за этого они не эффектно смотряться. Как сделать так, что б они отображались на форме не так как обычные Image-изображения, а как кнопки? smile
smile smile smile

Автор: Snowy 7.2.2005, 14:50
А вот и не получится. 3D ты обрезал.
Так что либо не обрезай, либо без 3D.
Как вариант - можешь создать свои кнопки на основе TImage.

Автор: Мебель 8.2.2005, 11:06
Ну а как не обрезать? Тут же назначаются регионы, вдоль которых и идет эффект 3D... smile

Автор: Snowy 9.2.2005, 09:24
Ну так нарисуй такие кнопки, чтобы смотрелись как 3D smile
Даже специальные программы и плагины есть для рисования 3-х мерных кнопок.
Рисуешь трехмерную кнопку в двух положениях и меняешь картинку по онкликам.
Зайди на любой сайт по фотошопу, наверняка найдешь статью, как нарисовать 3-хмерную кнопку.

Автор: Мебель 9.2.2005, 10:15
Просто не догадался... smile

Автор: Vit 9.2.2005, 17:45
Перенесено из раздела Дельфи

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)