Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Вниз

Стиль кисти bsClear в метафайле   Найти похожие ветки 

 
Pavel_P   (2003-12-24 16:43) [0]

Уважаемые Господа, подскажите пожалуйста: как узнать был ли стиль у кисти bsClear при чтении метафайла (emf, wmf). Проблема в том, что я создаю пробный метафайл (рисую Rectangle) со стилем кисти bsClear, а затем считываю его, но в PEMRCreateBrushIndirect(Ptr).lb.lbStyle = BS_SOLID, а не BS_NULL (или BS_HOLLOW)...


 
MBo   (2003-12-24 17:02) [1]

Windows какие?


 
MBo   (2003-12-24 17:07) [2]

Возможно, используется просто SelectObject(.. GetStockObject)


 
Pavel_P   (2003-12-24 17:07) [3]

Windows 9x (не NT, хотя данная проблема, по-моему, не зависит от ОС)


 
Pavel_P   (2003-12-24 17:23) [4]

в смысле не PEMRSelectObject(P)?.. Т.е. я не совсем понял... Я считываю созданный заранее метафайл функцией EnumEnhMetaFile(0, Metafile.Handle, @MFProc, Self, Rect(0,0,0,0)), где в MFProc есть некий case-переход (в зависимости от константы, например EMR_CREATEBRUSHINDIRECT) на создание Brush (как она создаётся, я написал выше)


 
MBo   (2003-12-24 17:48) [5]

Попробовал под XP - если в метафайл нарисовать фигуру, ничего не делая с кистью - в перечислении есть EMR_CREATEBRUSHINDIRECT с солид белой кистью.

Select Obj: 00000001
CREATEBRUSH Brush Style: 0 Color 00FFFFFF
Select Obj: 00000002

Если же вставить emc.Brush.Style:=bsClear;
то EMR_CREATEBRUSHINDIRECT отсутствует!
Select Obj: 00000001
Select Obj: 80000005


 
MBo   (2003-12-24 18:01) [6]

Да, точно, эта строка дает тот же результат

emc.Brush.Handle:=GetStockObject(NULL_BRUSH);

Select Obj: 00000001
Select Obj: 80000005


 
Pavel_P   (2003-12-24 18:01) [7]

Ну да, есть такой момент, но это другой вопрос, извиняюсь, что, наверно, неправильно выразился выше... У меня она в этом случае "входит" в EMR_SELECTOBJECT: и тут-то я уже вызываю функцию, которая делает PEMRSelectObject(Ptr) - когда это будет кисть, я вызываю конструктор кисти TMyBrush.Create, в котором делаю PEMRCreateBrushIndirect(P).lb.lbStyle и т.д. (см. выше)... вот... во! может кисть только для bsClear и "проходит" через PEMRSelectObject?.. тогда, мне нужно добавить нечто вроде проверки - если кисть "из" PEMRSelectObject, то она bsClear, а?


 
MBo   (2003-12-24 18:05) [8]

нет, GetStockObject(NULL_BRUSH) дает Select Obj: 80000004

{$EXTERNALSYM BLACK_BRUSH}
BLACK_BRUSH = 4;
{$EXTERNALSYM NULL_BRUSH}
NULL_BRUSH = 5;

Так что $80000000+StockObjectIndex


 
MBo   (2003-12-24 18:13) [9]

И вот это еще
{ Stock object flag used in the object handle index in the enhanced
metafile records.
E.g. The object handle index (META_STOCK_OBJECT or BLACK_BRUSH)
represents the stock object BLACK_BRUSH. }

{$EXTERNALSYM ENHMETA_STOCK_OBJECT}
ENHMETA_STOCK_OBJECT = DWORD($80000000);


 
Pavel_P   (2003-12-24 18:25) [10]

...покажусь кретином, но что-то к концурабочего дня не особо въезжаю в идею...


 
Pavel_P   (2003-12-24 18:39) [11]

... то есть когда будет bsClear???


 
MBo   (2003-12-25 09:55) [12]

Когда Select Obj: $80000005


 
Pavel_P   (2003-12-25 11:38) [13]

оk... да, всё... понял куда вставить проверку (просто не я до этого эту прогу писал, хрен разберёшься)... Большое спасибо!



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

Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.015 c
1-25367
sanilo
2003-12-25 16:42
2004.01.09
Windows XP & Shell


4-25637
ZEE
2003-11-05 17:34
2004.01.09
OnChange у Edit а : (


1-25309
Trad
2003-12-22 20:51
2004.01.09
Два DateTimePicker: надо посчитать кол-во полных месяцев.


1-25355
mefistofel
2003-12-25 15:52
2004.01.09
КАК из любова файла


1-25286
kotel
2003-12-25 16:53
2004.01.09
Панель инструментов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский