![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пожелания: GRushControls [Delphi, Windows]
Vladimir Kladov © (2007-05-27 18:39:00)вот такое пожелание: сделать хотя бы альтернативно через IFDEF темы - в виде глобальной структуры с цветами заливки, шрифтов, круглостью уголков. Почему глобальной: чтобы тему можно было сменить на лету. Можно для примера приготовить несколько тем и даже сделать процедуру-конструктор темы, который на базе всего 2 или даже 1 цвета заполняет всю структуру. И все сразу стало из голубоватого песочно-желтоватым или гламурно-розовым...
Vladimir Kladov (2007-06-09 16:57:00) [1]По поводу устройства - это перевод на русский хромой. Речь идет о статическом обращении к точке в dll, которой нет. Наверное, надо обновить comctl32.dll. У меня Delphi5 стоит на 95 под ConnectixVirtualPC, и вот самая последняя версия 2.65+ прекрасно встала, никаких присоединенных устройств не возмутилось. Правда, в пакете кроме самого MCK, ничего и не было больше.
Vladimir Kladov (2007-06-09 12:41:00) [2]Надо положить GRush-панель на форму и присвоить ей Transparent = true. Сегодня проверял: этого достаточно и в NT4, и в 98, чтобы пол-панели съелось напрочь. Прозрачность панели нужна особненно, когда ее положили на совсем другую панель, например - чтобы уголки были круглые, как положено.
homm (2007-06-06 07:59:00) [3]Вот, блин, ерунда то.
В 95-й спосле сборки пакета (кол) после того, как показал все впрнинги и хинты, говорит
«Can't load package c:\program files\…\mirrorKOLPackage.bpl.
Присоединенное к системе устройство не работает.»
В 98-й все встало. Было у когонибудь?
homm (2007-06-06 00:54:00) [4]Да, спасибо Антон Шапеткин ака ANTPro за помошь.
homm (2007-06-06 00:53:00) [5]Так, Владимир, с Вас минимальное нерабочее приложение, где панель не рисует. Я себе 95-ю поставил :) (VMWare рулит)
homm (2007-06-05 16:56:00) [6]Извините тогда.
Я правильно подумал что Вы не могли в здравом уме написать то, что я прочел :)
Vladimir Kladov (2007-06-05 16:49:00) [7]Не хочу ругаться. Еще раз посмотрите, мысленно убрав директивы. Там else стоит. Однако.
homm (2007-06-05 15:50:00) [8]
{$IFDEF FIX_16BITMODE}
if WinVer < wvY2K then
Bitmap := NewDibBitMap(W, H, pf32bit)
else
{$ENDIF FIX_16BITMODE}
if UseDIB then
Bitmap := NewDIBBitMap(W, H, pf32bit)
else
Bitmap := NewBitMap(W, H);
Владимир, простите, что это за бред?
if WinVer < wvY2K then
Bitmap := NewDibBitMap(W, H, pf32bit)
else
создаем один битмэп,
if UseDIB then
Bitmap := NewDIBBitMap(W, H, pf32bit)
и не уничтожая сразу другой???
Vladimir Kladov (2007-05-31 17:43:00) [9]Я как-то делал своим кодом. Использовал функцию хаоса, в принципе получалось примерно то, что надо. Хотя некоторая крапчатость наблюдалась.
Насчет того изменения, которое первое в одном, я бы предложил такой вариант:
{$IFDEF FIX_16BITMODE}
if WinVer < wvY2K then
Bitmap := NewDibBitMap(W, H, pf32bit)
else
{$ENDIF FIX_16BITMODE}
if UseDIB then
Bitmap := NewDIBBitMap(W, H, pf32bit)
else
Bitmap := NewBitMap(W, H);
Исчезновение половины панели мне не нравится гораздо больше, чем заливка с явными полосами.
homm (2007-05-31 16:33:00) [10]Хотя, чего это я :) Сам же сказал что в 95-й подсистема видео позволяет FillRect верно рисовать :)
homm (2007-05-31 16:32:00) [11]Значит 95/NT4.0 сосут :(
Других способов, кроме озвученых выше плавной заливки, без рисования «совсем уж все ручками», я не знаю.
> TransparentBlt contains a memory leak that can exhaust system
> resources. To draw a transparent bitmap using BitBlt, see
> Knowledge Base article 79212.
По этому вопросу было обсуждение еще в ранних версиях, в 98-й TransparentBlt не используеться.
Vladimir Kladov (2007-05-31 16:14:00) [12]MSDN:
TransparentBlt:
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Included in Windows 98 and later.
Windows 95/98: TransparentBlt contains a memory leak that can exhaust system resources. To draw a transparent bitmap using BitBlt, see Knowledge Base article 79212.
GradientFill:
Windows NT/2000/XP: Included in Windows 2000 or later.
Windows 95/98/Me: Included in Windows 98 or later.
homm (2007-05-30 21:40:00) [13]> Наверное, дело в том, что размер паттерна в NT4 и Win9x
> ограничен 8х8, или отрисовка просто проскакивает.
Под словом патерн понимаеться обект у кисти? Он не используеться. Все рисуеться вручную.
Все проще. Дело в том, что в 9х правильный градиент можно нарисовать последовательным FillRect с шириной один пиксель, а в NT он уже получаеться дерганым, как на рисунке. Зато в NT появляеться славная библиотека «msimg32.dll», с двумя полезными функциями TransparentBlt и GradientFill, последняя из которых лишена сего недостатка. Видимо версия 4.0 является «редким исключением», имеющим видоеподсистему линейки NT, но еще не наделенной волшебной библиотекой. Проверьте существование библиотеки и экспортность сих функций. Если ее нет, есть шанс что заработает из NT 5.x.
В 95-м все должно быть нормально.
Так-же очень заинтерисовало появление исходного кода библиотеки в файле «Градиент диаг 64К ХР» :) Это не моя пасхалка :)
Еше неподдельный интерес вызвали надписи «Next >>» и «Cancel» на той картинке, где полная панель. Вы как-то упомяналя что у Вас сильно тормозит 2Д графика в виндовс. Может все 3 глюка одного поля ягоды?
Vladimir Kladov (2007-05-30 20:57:00) [14]Вот еще одна непрятность. Наблюдается под NT4, но думаю, под 98 то же самое (смотрел только под VmWare, win95 вроде, действительно так).
http://kolmck.net/snapshots.rar
Смысл такой, что в 64К цветов (верхние 2 полоски на том снапшоте, где их 3) не дают плавную заливку. Наверное, дело в том, что размер паттерна в NT4 и Win9x ограничен 8х8, или отрисовка просто проскакивает. Жить с этим можно, но неприятно. Было бы интересно узнать: возможно ли технически перейти на использование паттернов 8х8, не сильно ли на много это потянет исправлений, и можно ли (для скорости) сделать так, чтобы в современных системах продолжал исполььзоваться 32х32.
Там же скриншоты панели, у которой исчезает нижняя половина, если применить первую часть изменений из того одногоизменения в DrawControlState, о котором говорилось выше.
Vladimir Kladov (2007-05-29 18:35:00) [15]Не совсем еще. И DOS'ом люди пользуются, и в Win 3.11 работают. Но говоря о платформе винды, подразумевать следует все, что win95-Vista, включая NT по крайней мере от NT4.
Barloggg (2007-05-29 16:35:00) [16]угу и нас 98 уже не осталось
похоже на 98-ю можно забивать.
даже дома на купленной недавно мат плате не оказалось дров для 98 винды. Придется ориентироваться только на одиночную винду...
эпоха 98-й похоже заканчивается.
homm (2007-05-29 16:20:00) [17]Я и 98-ю, чесно говоря ставить не хочу :) Тестировал когда-то в универе, но теперь и там компы обновили.
Vladimir Kladov (2007-05-29 16:18:00) [18]Я говорю то, что есть. Под 98 не смотрел, но в прошлый раз выглядело одинаково. Можете попробовать под ним, раз NT ставить не хотите.
homm (2007-05-29 16:16:00) [19]> под NT4: пол-панели как корова языком слизала
Вод для панели как раз «первая» замена ничего и не должна менять. (там где NewBitmap на if меняем).
homm (2007-05-29 16:11:00) [20]Нет, изменений было предложено ровно одно и оно затрагивает и конец и начало процедуры :)