改变一下 DxDraw 的背景

原创 2007年09月21日 11:05:00

初学delphiX ,想改变一下 DxDraw 的背景,于是找到了这篇文章

话题247821的标题是: 请教用过DelphiX的兄弟 (100分)
分类:图形图象

Nutty (2000-05-18 17:34:00)

在下用dxdraw.surface.fill(devcolor: longint)初始化背景色,
然而这个longint的devcolor我不知该如何赋值.

现象:
   查看其定义,可以用RGB颜色来表示,但当我想要背景为绿色时,
执行dxdraw.surface.fill(RGB(0,128,0))却得到紫色背景!

wjiachun (2000-05-18 17:55:00)

dxdraw.surface.fill(RGB(0,255,0));

Nutty (2000-05-18 17:56:00)

也即是说
  值域为 -7FFFFFFE----7FFFFFFF 的TColor色与
定义值域为 0----FFFFFFFF 的dev色之间如何进行转换?

Nutty (2000-05-18 17:58:00)

wjiachun兄:
  不是这样...
dxdraw.surface.fill(clgreen)得到的是紫色背景...faint

wjiachun (2000-05-18 18:07:00)

I faint too!

Croco (2000-05-18 18:08:00)

值域为 -7FFFFFFE----7FFFFFFF 的TColor色与
定义值域为 0----FFFFFFFF 的dev色之间如何进行转换?
>>
没用过 DelphiX, 转换可用:
function ColorToRGB(Color: TColor): Longint;

>>附例子中的调用,不知有没有帮助:
var Col: TRGBQuad;
c := DXDraw.Surface.ColorMatch(RGB(Col.rgbRed, Col.rgbGreen, Col.rgbBlue));
DXDraw.Surface.Fill(c);

Nutty (2000-05-19 22:52:00)

还是不行,难道它用的颜色的末六个字节不代表RGB? 还是调色板没用对?

Zephyr (2000-05-19 23:26:00)

Col参数实际上就是象素在内存中的数据,它的值取决于TDXDraw控件的
Surface.BitCount的值。当BitCount为8时,每个象素用1byte表示(8位),
这时Col参数实际上是一个调色板的索引值,只使用最后8位(0至255)。
当BitCount为24时,每个象素用3byte表示,这时Col的末六个字节才是代表
RGB三色的量。估计你用的是640X480X16等16位的显示模式(看一下DXDraw
Display属性就知道了),这时Col参数中用后15位表示RGB三色的分量,每一
色为5位,所以你用$00FF00无法显示出绿色。你可以根据你的需要用位操作来
产生出16位显示模式下的Col值。

Fudei (2000-05-20)

怎么不行呢,我用过行得

Nutty (2000-05-20 22:39:00)

确实是设成24bits真彩才正确显示颜色, Zephyr兄果然了得...

但是用户如果设置window的颜色为16或8bits时又怎么办呢? 再用RGB(r,g,b)填色又会乱显示了.我记得论坛有过讨论,但不了了之,你有好办法吗?



Zephyr (2000-05-21 1:03:00)

根据实际情况来计算颜色值(就是说先判断当前显示模式,再根据当前显示模
式下象素的格式计算颜色值)。或者让你的程序在全屏方式下运行,但要事先
把TDXDraw的Display属性设为24bits的显示模式,这样在切换到全屏方式下时
会用Display属性指定的显示模式运行。具体如何做可参考DelphiX的例子。

也许(应该)还有更好的方法。

Nutty (2000-05-22 1:24:00)

谢谢

sunwork (2000-08-03 20:44:00)

如何用DIRECTDRAW显示真彩色的图片,我只能显示256色的图片,用SETDISPLAYMODE设置(800,600,8)
再设置成(800,600,24)真彩色模式的时候就出现错误。能有办法吗?

Zephyr的回答最终被接受。

 

Android通过用代码画虚线椭圆边框背景来学习一下shape的用法

在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,shape可以绘制矩形环形以及椭圆,所以只需要用椭圆即可,在使用的时候将控件比如Imageview或Textview...

今天和大家讲一下怎么样简单的把壁纸作为背景,在中间加一个textview效果图如下

Activity的配置如上。。重点就是加了一个样式。。。网页有CSS/D...

背景颜色渐变(每天坚持一下)

只是实现水平或垂直方向的背景色渐变,只需重载OnEraseBkgnd函数在有视图的时候很好找 但是对话框时候就不好找了 可以按照如下步骤:1.快捷键Ctrl+W打开ClassWizard对话框(菜单-...
  • ychw365
  • ychw365
  • 2011年06月25日 19:32
  • 505

Android通过用代码画虚线椭圆边框背景来学习一下shape的用法

在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,shape可以绘制矩形环形以及椭圆,所以只需要用椭圆即可,在使用的时候将控件比如imageview或textview...

改变网页背景为绿色

  • 2015年07月10日 13:31
  • 157KB
  • 下载

HTML 5的征程~~希望有机会抓住这个浪潮改变一下生活~

移动互联网时代已经来临 移动互联网的浪潮已经袭来,iOS全球大热,Android也已经异军突起,而WP7仍在励精图治意图抢占山头,移动终端数量已经超过了PC,移动互联网已经完全成为了生活中的一部分,...
  • h5play
  • h5play
  • 2011年10月27日 15:03
  • 366

改变页面背景颜色

  • 2014年01月22日 14:52
  • 680B
  • 下载

Color设为背景颜色改变

  • 2016年01月11日 13:57
  • 2.64MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:改变一下 DxDraw 的背景
举报原因:
原因补充:

(最多只允许输入30个字)