IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Изменение параметров формы, Границы формы
Dead.MorozZ
сообщение 18.11.2005 19:47
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

Репутация: -  0  +


Господа, у меня такой вопрос:
Как можно изменить форму ФОРМЫ (извините за тофтологиюsmile.gif, чтоб она скажем имела форму элипса или звезды... а еще лучше чтоб формой была произвольная картинка (БэкГроунд) картинка?? boredom.gif


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
volvo
сообщение 18.11.2005 20:02
Сообщение #2


Гость






To: Dead.MorozZ
Смотри в DRKB, там были статьи на эту тему...
(VCL -> TForm -> Формы нестандартного вида)
 К началу страницы 
+ Ответить 
Fang
сообщение 19.11.2005 2:12
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской
Реальное имя: Fang

Репутация: -  2  +


Цитата
а еще лучше чтоб формой была произвольная картинка (БэкГроунд) картинка?? boredom.gif


Вот функция для создания области по картинке (из книги "Дельфи глазами хакера"). Может быть поможет.


Код
function CreateRgnFromBitmap(rgnBitmap: TBitmap): HRGN;
var
 TransColor: TColor;
 i, j: Integer;
 i_width, i_height: Integer;
 i_left, i_right: Integer;
 rectRgn: HRGN;
begin
Result := 0;
i_width := rgnBitmap.Width;
i_height := rgnBitmap.Height;
transColor := rgnBitmap.Canvas.Pixels[0, 0];
for i := 0 to i_height - 1 do
 begin
  i_left := -1;
  for j := 0 to i_width - 1 do
   begin
    if i_left < 0 then
     begin
      if rgnBitmap.Canvas.Pixels[j, i] <> transColor then
       i_left := j;
     end
    else
     if rgnBitmap.Canvas.Pixels[j, i] = transColor then
      begin
       i_right := j;
       rectRgn := CreateRectRgn(i_left, i, i_right, i + 1);
       if Result = 0 then
        Result := rectRgn
       else
        begin
         CombineRgn(Result, Result, rectRgn, RGN_OR);
         DeleteObject(rectRgn);
        end;
       i_left := -1;
      end;
   end;
  if i_left >= 0 then
   begin
    rectRgn := CreateRectRgn(i_left, i, i_width, i + 1);
    if Result = 0 then
     Result := rectRgn
    else
     begin
      CombineRgn(Result, Result, rectRgn, RGN_OR);
      DeleteObject(rectRgn);
     end;
   end;
 end;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dead.MorozZ
сообщение 4.12.2005 15:20
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

Репутация: -  0  +


А как изменить форму окраску и тд. у заголовка формы(того где кнопки Свернуть, Закрыть ...)


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 23.06.2025 7:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"