Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.07.2008, 08:07
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию Как придать форме "форму" нужной картинки?

Нужно сделать форму не ровной, не квадратной и не круглой, а чтобы она соответствовала нужной картинке.. Помогите пожалуйста!
Ответить с цитированием
  #2  
Старый 09.07.2008, 08:35
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

http://www.delphi-central.com/BitmapShapedForm.aspx
__________________
Программирование - это искусство и наш смысл жизни.
Ответить с цитированием
  #3  
Старый 09.07.2008, 13:26
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию не компилиться

тот код не компилируется..

23 ошибок...

Есть другие примеры?
Ответить с цитированием
  #4  
Старый 09.07.2008, 18:09
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

У меня скомпилилось отлично. Компилил в Delphi 7.
__________________
Программирование - это искусство и наш смысл жизни.
Ответить с цитированием
  #5  
Старый 17.07.2008, 11:05
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Есть хороший компонент - PlazmaForm (у меня работал в 5 и 6 версиях Delphi, в 7 не скомпилилась при установке), задается картинка (любая), где различаются фон и сама картинка (по типу построения иконки *.ico, только фон сам указываешь в процессе написания проги) и при выполнении получается окошко любой формы. На просторах интернета новых версий (да и старых) давно не находил, кидаю в аттач, может поможет.

ЗЫ: спасибы можно кидать автору компоненты, его мыло и описание компоненты на буржуйском в ридми
Вложения
Тип файла: zip plasma.zip (47.4 Кбайт, 34 просмотров)

Последний раз редактировалось cotseec, 17.07.2008 в 11:08.
Ответить с цитированием
  #6  
Старый 04.05.2009, 15:23
Andryha Andryha вне форума
Прохожий
 
Регистрация: 04.05.2009
Адрес: Новосибирск
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от ApplicatiOn
Нужно сделать форму не ровной, не квадратной и не круглой, а чтобы она соответствовала нужной картинке.. Помогите пожалуйста!
Вот попробуй. Точно работает на delphi 7, 2006,2007:

Код:
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;

procedure TForm1.FormCreate(Sender: TObject);
var
WindowRgn: HRGN;
begin
 BorderStyle :=bsNone;
 ClientWidth := Image1.Picture.Bitmap.Width;
 ClientHeight :=Image1.Picture.Bitmap.Height;
 windowRgn := CreateRgnFromBitmap(Image1.Picture.Bitmap);
 SetWindowRgn(Handle, WindowRgn, True);
end;

Заметь, что будет убираться цвет самого верхнего пикселя в картинке.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025