几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » DirectDWG
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-05-07, 03:42 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】setlogicalpalette And Inverted Bitmap

setlogicalpalette and inverted bitmap
setlogicalpalette and inverted bitmap
i am trying to find some general explanation as to how the gdi\opengl devices render to bitmap, particularly with regard to color. i am successfully rendering my layouts, but the colors appear to be inverted. using cmd_bmpout.cpp as an example, i am calling:
code:
// set the device properties using canvas passed in
std(cout) << " " << "canvas bits per pixel: " << canvas.bpp << std(endl);
pdevice->properties()->putat("bitperpixel", odrxvariantvalue(oduint32(canvas.bpp)));

// user-definable setting -- background color
std(cout) << " " << "canvas background color: rgb (" << canvas.backgroundr << ", " << canvas.backgroundg << ", " << canvas.backgroundb << ")" << std(endl);

pdevice->setbackgroundcolor(odrgb(canvas.backgroundr, canvas.backgroundg, canvas.backgroundb));
pdevice->setlogicalpalette(odcmacadpalette(odrgb(0,0,0)), 256);
// render...
odgsdcrect gsrect (0, 1000, 0, 1000);
pdevice->onsize(gsrect);
pdevice->update();
...for explanation, i am requested a white background and an 8-bit rendering. essentially, things that are white are supposed to be black and vice versa. i thought the palette might have been reversed, so i dumped it and got unexpected results.
so, my question is, how is the palette determined using this method and more specifically, what do the parameters to setlogicalpalette do?
thanks,
--chris
acad uses 2 different palettes for light and dark backgrounds. for example color with index 7 is white on dark background and black on light background.
setlogicalpalette() parameters are pointer to odcolorref array and its size. (size is always 256 for rendering acad files)
odcmacadpalette() returns one of acad palettes depending on passed background color. you requested palette for black backgound (0,0,0)
sergey slezkin
thanks for the explanation. i just figured out what was going on with your help.
thanks again...
chris
last edited by clubeck; 8th june 2005 at 09:06 amfff">.
calls to setbackgroundcolor() and setlogicalpalette() are independent.
first one sets background, second - color table.
odcmacadpalette() returns pointer to one of palettes depending on rgb passed to it.
code:
pdevice->setbackgroundcolor(odrgb(canvas.backgroundr, canvas.backgroundg, canvas.backgroundb));
pdevice->setlogicalpalette(odcmacadpalette(odrgb(0,0,0)), 256);
changing arguments of odrgb in second line does not effect background which is set by the first line.
sergey slezkin
is there any method of knowing what the palette values should be based on what is in the file, or is this strictly a user preference?
thanks,
chris
in pre-2004 acad versions colors in dwg (or dxf) files are stored as palette index. no information about background color is stored in file. usually cad drawings are supposed to be printed on white paper. to enable drafting with black background alternative palette was introduced.
since acad 2004 color can be specified not only by palette index but by rgb too.
sergey slezkin
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】normal inverted by symmetry yang686526 DirectDWG 0 2009-05-06 06:38 PM
【转帖】inverted ole yang686526 DirectDWG 0 2009-05-06 04:10 PM


所有的时间均为北京时间。 现在的时间是 08:38 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多