Вниз
Скачать: 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.025 c
10-1096551187
AntonSh
2004-09-30 17:33
2005.07.18
COM Server


1-1120411079
petr1
2005-07-03 21:17
2005.07.18
FastNet


4-1116572710
ANB
2005-05-20 11:05
2005.07.18
Как запустить bat файл


4-1116510712
ATarget
2005-05-19 17:51
2005.07.18
Сохранить процесс


6-1113373266
Slym
2005-04-13 10:21
2005.07.18
Формат GZip где я не прав?




   Наверх