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


Автор: elestrago 1.2.2008, 17:08
вот собственна форма user posted image

Автор: THandle 1.2.2008, 17:10
Смотри в сторону регионов. В DRKB помойму были примеры.

Автор: elestrago 1.2.2008, 17:20
я про региона там много че нашел а вот про сглаживание неровных краев чето не могу откопать... поэтому тут отписал тему..

Автор: Alexeis 1.2.2008, 17:58
  Можно просто задать прозрачный цвет и сделать его цветом формы, потом нарисовать на форме нужуню картинку любым другим цветом отличным от прозрачного.

Автор: elestrago 1.2.2008, 21:53
 smile 

Автор: MetalFan 1.2.2008, 22:14
наверное стоит смотреть в сторону UpdateLayeredWindow 

Автор: Alexeis 1.2.2008, 23:01
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  TransparentColor      := true;
  TransparentColorValue := clBlue;
  Color                 := clBlue;
  AlphaBlend            := true;
  AlphaBlendValue       := 150;
  BorderStyle           := bsNone;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture();
  form1.Perform(WM_SYSCOMMAND, $F012, 0);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Brush.Color := clBlack;
  Canvas.Pen.Color := clBlack;
  Canvas.Ellipse(-100, -100, 100, 100);
end;

Автор: elestrago 2.2.2008, 09:14
не совсем гладкие края user posted image

Добавлено через 1 минуту и 59 секунд
читал где то в нете что можно сделать что то типа визуального уменьшения формы типа как рисук сперва рисуешь в большом разрешшение потом уменьшаешь и получается четкий рисунок! 

Автор: Urvin 2.2.2008, 10:15
Вот такую фишку нашел:
http://funkyimg.com

Медленная зараза, но, может, на первых порах подойдет.
Там ели брать на рассмотрение только часть окружности определенной толщины...
http://urvin.ifolder.ru/5194855

Автор: elestrago 2.2.2008, 10:41
на виндовс виста это вот как выглядит smile user posted image

Автор: Alexeis 2.2.2008, 12:44
Цитата(elestrago @  2.2.2008,  08:14 Найти цитируемый пост)
не совсем гладкие края

  Так и в первом посте они не гладкие! Чтобы они были гладкими нужна изменяющаяся прозрачность. Т.е. переходила бы в 0 на самом краю. Такое можно сделать функцией UpdateLayeredWindow, как и сказал MetalFan.
  Самопальная прозрачность неканает, слишком медленно работает да и следы видны. Прорисовкой LayeredWindow занимается винда, от того оно получается сравнительно быстро и красиво. Это единственный более менее приличный вариант.

Автор: elestrago 2.2.2008, 13:11
откопал очень интересный исходник http://desksoft.ru/index.php?forum=13&th=47 

user posted image

может кому пригодится smile 

Автор: Urvin 2.2.2008, 14:04
elestrago, Отличный пример, спасибо!

Автор: AntonN 2.11.2008, 18:38
нарисовал второй пример заставки, более "живой" и похожий на сплеш, возможно кому то пригодится.
с выводтом текста статуса загрузки, прогрессбаром и понтовыми иконками smile
user posted image

http://desksoft.ru/index.php?downloads=attachments&id=108 (zip, 280kb с ЕХЕ).

Автор: pseud 6.11.2008, 11:30
супер
жаль только что при таскании за брюхо процесс отсанавливается.
да и заметка для скачавших - при закрытии сплеша по альт+ф4 - прогу нужно вырубать диспетчером или ждать пока сплеш где-то там дозагрузится.

Автор: AntonN 6.11.2008, 11:47
насколько я помню vcl отрабатывается в одном потоке, потому и тормозится процесс. А вот если загрузка не будет прилеплена к сообщениям (например закачка по сети в доп потоке и изредка возвращает прогресс в основном поток), то остановки не будет, будет скачек прогресса когда перестанем таскать сплеш (я его вообще только для наглядности сделал таскаемым smile ).
и да, что то с потоками намудрил, все равно же отрисовка стопорится smile

Автор: pasha08 9.1.2009, 16:18
Эээ... это, конечно, всё круто, но как в примере elestrago какие-нибудь кнопки, image'ы и т.д. отображать???

Автор: AntonN 9.1.2009, 16:37
вручну рисовать их на том битмапе, что будет выводиться

Автор: pasha08 9.1.2009, 18:00
а какой-нибудь edit с мигающим курсором? и каким образом?

Автор: AntonN 9.1.2009, 18:54
а вот про эдиты не знаю smile

Автор: pasha08 9.1.2009, 18:57
а если серьёзно?

Автор: December 9.1.2009, 19:15
Лингво и Фотошоп просто запоминают кусок экрана, поверх которого собираются рисовать свой сплэш, и рисуют на форму свою картинку поверх этого куска экрана. Думаю, это самый универсальный способ. Если сплэш висит не сильно долго, и картинка под ним не меняется, то юзер скорее всего ничего и не заметит.

Автор: AntonN 9.1.2009, 20:39
pasha08, серьезней некуда, стандартные контролы не совсем подходят, нужно свои реализовывать. Так в Конфабуляторе есть виджет поиска, там эдит свой, графический. Конечно это ниразу не легко smile

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