![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Частичная прозрачность [D7, WinXP]
маленький человек © (2005-10-25 05:44:00)Доброго времени суток уважаемые... подскажите пожалусто каким образом можно реализовать следующее - частичную прозрачность формы.
Типичным примером является меню "ПУСК". Если поперетаскивать ярлыки из ПУСК->Программы, то во время перемещения элемент меню будет "градиентно" прозрачным...
Интересно как же это можно сделать самому?
З.Ы. Все вышесказанное относится к ХР...
Antonn (2005-11-09 16:25:00) [1]маленький человек (09.11.05 13:27) [33]
каждый раз заного прорисовывал и все?
угу, говорю ж, от любого события нужно перерисовывать все. думаю тормоза будут на слабых компах
маленький человек (2005-11-09 13:27:00) [2]Слушай, а как ты делал чтобы обрабатывались события кнопок, например при нажатии менялись и прочее... каждый раз заного прорисовывал и все?
Antonn (2005-11-09 13:11:00) [3]маленький человек (09.11.05 12:23) [30]
Но вот как быть с кнопками, панелями и другими компонентами... ?
а хз:)
мне надоело искать, я просто картинками понавставлял:)
маленький человек (2005-11-09 12:41:00) [4]А ну все... разобрался как прорисовать... просто искать все компоненты, и если у них нет конваса то создать его... и нарисовать :)
маленький человек (2005-11-09 12:23:00) [5]А ну все... с текстом номально... сделал просто так:
Font.Color := clBlack;
Rec := Rect(5, 5, bF.Width, 25);
DrawText(bF.Canvas.Handle, PChar('Расписание'), length('Расписание'), Rec,DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
вместо textout...
Но вот как быть с кнопками, панелями и другими компонентами... ?
маленький человек (2005-11-09 11:45:00) [6]А есть вариант отоброжения обычных компонентов кроме как PaintTo?
маленький человек (2005-11-09 11:39:00) [7]странно почему-то у меня не выводятся надписи в этом примере...
with bF.Canvas do begin
pen.Color:=clBtnShadow;
moveto(0,25); lineto(0,0); lineto(bF.width-1,0); lineto(bF.Width-1,25);
Brush.Style:=bsclear;
textout(5,(25-textheight('Р')) div 2, 'Расписание');
end;
Antonn (2005-11-09 10:56:00) [8]кнопочки - картинки. Вот, повырезал что смог:)
http://an-files.narod.ru/2.rar
маленький человек (2005-11-09 09:25:00) [9]ну ваши забавные кнопочки... то какие образом вы это прорисовывали (компаненты или в рантайме)... так работали с UpdateLayeredWindow... задача, как говорится, одна, а пути решения разные :)
Antonn (2005-11-09 09:00:00) [10]а что в самой форме интересует?
маленький человек (2005-11-09 06:21:00) [11]Весьма и весьма солидно! а можно все же очень... ну ОЧЕНЬ вежлево и жалобно попросить исходник??? :) думаю ни одному мне будет интересно как это было сделано... если прям совсем ну НИКАК низя дать исходник, мож возможно вы сделаете просто форму которая будет выглядеть как ваша? а то прям слюнками истекаю... :)
Antonn (2005-11-08 15:29:00) [12]маленький человек (08.11.05 10:49) [22]
Если можно, но почему без кода? жалко?
угу:)
http://an-files.narod.ru/ss.rar
прога расписание отображает.
маленький человек (2005-11-08 10:49:00) [13]Если можно, но почему без кода? жалко?
Antonn (2005-11-08 07:38:00) [14]маленький человек (08.11.05 5:39) [18]
а делать битмэп все формы и его уже для него делать paintto()
у лабела нет paintto(), только через канвасы плясать, да drawtext()
маленький человек (08.11.05 7:19) [20]
И можно посмотреть результатов которых удалось достич вам?
без кода, могу программку показать(223Кб) которую написал с помощью этих функций, надо?
Но там лабелов нет.
маленький человек (2005-11-08 07:19:00) [15]И можно посмотреть результатов которых удалось достич вам?
маленький человек (2005-11-08 05:40:00) [16]И если вы найдете пути решения проблемы прорисовки всех компонентов то сообщите пожалйсто...
маленький человек (2005-11-08 05:39:00) [17]
> по примеру(из [13]), там также используется UpdateLayeredWindow.
>
> Но проблема, как на битмап скопировать label? У баттона
> есть paintto(), у прогрессбара есть paintto() а вот у лабела
> нет. И найдется еще несколько контроллов, которые не так
> просто изобразить...
> при этом, при каждом "задевании"(активация, нажатие, фокус)
> контроллов, приходится перерисовывать все конроллы на битмап,
> и обновлять всю форму.
Как думаете, а если просто попробовать прорисовывать не каждый компоненты отдельно, а все вместе... то есть, допустим, разместили мы все компаненты на форме и делать не для каждого paintto(), а делать битмэп все формы и его уже для него делать paintto() ?
Amoeba (2005-11-07 17:33:00) [18]
> маленький человек (07.11.05 05:16) [8]
> перевелись мастера делфи :(
А мастерам это просто ни нафиг не нужно. Есть более важные и интересные проблемы, чем такая фигня, как полупрозрачность, а тем более меню.
P.S. Вроде как меню "Пуск" не является настоящим меню Windows, а его имитацией, создаваемой средствами API.
Antonn (2005-11-07 16:23:00) [19]по примеру(из [13]), там также используется UpdateLayeredWindow.
Но проблема, как на битмап скопировать label? У баттона есть paintto(), у прогрессбара есть paintto() а вот у лабела нет. И найдется еще несколько контроллов, которые не так просто изобразить...
при этом, при каждом "задевании"(активация, нажатие, фокус) контроллов, приходится перерисовывать все конроллы на битмап, и обновлять всю форму.
маленький человек (2005-11-07 14:33:00) [20]Да... возможно... но я все же скорее всего имел ввиду - сЫрец (source)... недопонимание?
З.Ы. Хотя может и я просто неправильно термин использовал...