Вниз
Скачать: CL | DM;

dxdraw1.fillrect   Найти похожие ветки 

 
Green_Templar ©   (2005-04-02 00:32) [0]

form1.DXDraw1.Surface.FillRect(menui[0,0],clred); рисует мне синий прямоугольник, а с clblue рисует чёрный. Экран 1024*768*16. Почему так глючит и как нарисовать правильным цветом?


 
Omar2002 ©   (2005-04-02 21:45) [1]

вобще-то там цвет указывается как число типа LongInt. напримр 198476. Ну а уж какой это цвет - считай сам. Все очень просто пишешь цвет в хексе например 00FFAA12 переводишь его в лонгинт и все. Деталей е помню, ну немного по-экспериментируешь :)))


 
Green_Templar ©   (2005-04-02 23:56) [2]

Ну в хексе я умею, но где-то читал, что лучше всего использовать константы, типо они суперточны, а левое число может иметь разное значение цвета на разных машинах. Видимо, бред читал (или понял так).


 
Omar2002 ©   (2005-04-03 21:54) [3]

странно, ну вобще может быть такое или нет я не слышал. Но в хелпе можешь посмотреть - там так написано
procedureFillRect(Rect:TRect;DevCol:Longint);


 
Omar2002 ©   (2005-04-03 21:58) [4]

да - и еще там написано, что если хочешь перегнать цвет из TColor, то можно юзать функцию TDirectDrawSurface.ColorMatch с синтаксисом:

function ColorMatch(Col:TColor):Integer;


 
Green_Templar ©   (2005-04-04 01:50) [5]

А что такое ColorSpace & ColorKey? Там же, в справке ДэлфиХ увидел.


 
NikeOLD ©   (2005-04-05 14:52) [6]

ColorKey - цветовой ключ, т.е. цвет, который будет рендерится прозрачным
ColorSpace - пространство цветовых ключей. Все цвета лежащие в указнном диапазоне будут считаться прозрачными.

Прикол с цветами имеет банальное решение. В DirectDraw используется прямая последовательность цветов RGB, а Боланд извратился со своим TColor до ABGR, где А - это неиспользуемое значение, требующееся лишь для непосредственной работы с палитрами. Решение проблемы - перевести цвет из BGR в RGB, хотя бы функцией ColorMatch.


 
Green_Templar ©   (2005-04-06 00:24) [7]

Именно в диапазоне? Не в множестве? А можно пример c ColorSpace?


 
Green_Templar ©   (2005-04-09 01:26) [8]

Окончательно запутался:
rect рисует прямоугольник с цветом RGB:888. Значит, максимальное число, которое можно нарисовать, $ffffff. Но при $0ff000 оно рисует мне красный, а при $ff0000 - чёрный!!! Почему? Благо, колормэтч работает исправно, но хотелось бы задавать цвет константой чтобы выйграть время...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.029 c
4-1116328694
Квас
2005-05-17 15:18
2005.07.18
Производитель CD


14-1119351478
Vlad Oshin
2005-06-21 14:57
2005.07.18
Нашел перстень. Что бы могли означать эти


14-1119527005
NewWonder
2005-06-23 15:43
2005.07.18
Что должно быть в ТЗ для программы средней сложности?


1-1119947114
rolex
2005-06-28 12:25
2005.07.18
Вопрос по TreeView


11-1103210800
boodilnik
2004-12-16 18:26
2005.07.18
иконки в Delphi7




   Наверх