为什么某些ps金属质感渐变在高温下表面会发紫,绿,蓝,黄的渐变

让控件背景色渐变,如何设置红、绿、蓝的取值从而得到自己想要的颜色?
让控件背景色渐变,如何设置红、绿、蓝的取值从而得到自己想要的颜色?
发布时间: 10:57:03
编辑:www.fx114.net
本篇文章主要介绍了"让控件背景色渐变,如何设置红、绿、蓝的取值从而得到自己想要的颜色?
10CSDN]",主要涉及到让控件背景色渐变,如何设置红、绿、蓝的取值从而得到自己想要的颜色?
10CSDN]方面的内容,对于让控件背景色渐变,如何设置红、绿、蓝的取值从而得到自己想要的颜色?
10CSDN]感兴趣的同学可以参考一下。
我在picture控件中实现了背景颜色的渐变,但就是不知道如何修改红、绿、蓝的数据值来得到自己想要的颜色,我的代码如下:请各位帮帮我,谢谢!
Private&Type&TRIVERTEX
&&&&x&As&Long
&&&&y&As&Long
&&&&Red&As&Integer
&&&&Green&As&Integer
&&&&Blue&As&Integer
&&&&Alpha&As&Integer
Private&Type&GRADIENT_RECT
&&&&UpperLeft&As&Long
&&&&LowerRight&As&Long
Private&Const&GRADIENT_FILL_RECT_H&As&Long&=&&H0
Private&Const&GRADIENT_FILL_RECT_V&&As&Long&=&&H1
Private&Const&GRADIENT_FILL_TRIANGLE&As&Long&=&&H2
Private&Const&GRADIENT_FILL_OP_FLAG&As&Long&=&&HFF
Private&Declare&Function&GradientFillRect&Lib&"msimg32"&Alias&"GradientFill"&(ByVal&hdc&As&Long,&pVertex&As&TRIVERTEX,&ByVal&dwNumVertex&As&Long,&pMesh&As&GRADIENT_RECT,&ByVal&dwNumMesh&As&Long,&ByVal&dwMode&As&Long)&As&Long
Private&Sub&Form_Load()
&&Picture1.ScaleMode&=&vbPixels
Private&Sub&Picture1_Paint()
&&Dim&vert(1)&As&TRIVERTEX
&&&&Dim&gRect&As&GRADIENT_RECT
&&&&With&vert(0)
&&&&&&&&.x&=&0
&&&&&&&&.y&=&0
&&&&&&&&.Red&=&0&&&&&&&&&&&&&&‘应该是这三行决定显示起始颜色吧!
&&&&&&&&.Green&=&0&
&&&&&&&&.Blue&=&0&
&&&&&&&&.Alpha&=&0&
&&&&End&With
&&&&With&vert(1)
&&&&&&&&.x&=&Picture1.ScaleWidth
&&&&&&&&.y&=&Picture1.ScaleHeight
&&&&&&&&.Red&=&0&&&&&&&&&&&&&&&&&&&&&&&&&‘应就是这三行语句来决定结束的颜色吧!
&&&&&&&&.Green&=&CInt(&HF000&&-&&H10000)&&‘如何修改它们呢?
&&&&&&&&.Blue&=&CInt(&HF000&&-&&H10000)&&&&‘它们的取值范围是多少?
&&&&&&&&.Alpha&=&0&
&&&&End&With
&&&&gRect.UpperLeft&=&0
&&&&gRect.LowerRight&=&1
&&&&GradientFillRect&Picture1.hdc,&vert(0),&2,&gRect,&1,&GRADIENT_FILL_RECT_H
恳请各位指点,十分感谢!0-255.Red&=&0&&&&&&&&&&&&&&&&&&&&&&&&&‘应就是这三行语句来决定结束的颜色吧!
.Green&=&CInt(&HF000&&-&&H10000)&&‘如何修改它们呢?
.Blue&=&CInt(&HF000&&-&&H10000)&&&&‘它们的取值范围是多少?
请问上面哪一句代表初始颜色,哪能一句代表终点颜色,并且其中上面两句的用减号的作用是什么?请各位高手能给予指点!三种颜色是放在一起的,—&HFFFFFF,Q前两个FF是红色,中间的是绿色,后面的是蓝色。前面的是后面的&HFFB倍。另外,减号是为了取得颜色的值请问上面哪一句代表初始颜色,哪能一句代表终点颜色,如何修改它们呢?能举例说明一下吗?谢谢了!请各位高手能用上面的代码举例说明一下控件的背景颜色的初始值和终止值选择方法或格式吗?根据上面的程序举个例子吧!我是初学者,偿试了好久都没成功,实在是不清楚,请你们能帮帮我,十分感谢!我郁闷
  With&vert(0)
&&&&&&&&.x&=&0
&&&&&&&&.y&=&0
&&&&&&&&.Red&=&0&&&&&&&&&&&&&&‘应该是这三行决定显示起始颜色吧!
&&&&&&&&.Green&=&0&
&&&&&&&&.Blue&=&0&
&&&&&&&&.Alpha&=&0&
&&&&End&With
这个是起始颜色
  With&vert(1)
&&&&&&&&.x&=&Picture1.ScaleWidth
&&&&&&&&.y&=&Picture1.ScaleHeight
&&&&&&&&.Red&=&0&&&&&&&&&&&&&&&&&&&&&&&&&‘应就是这三行语句来决定结束的颜色吧!
&&&&&&&&.Green&=&CInt(&HF000&&-&&H10000)&&‘如何修改它们呢?
&&&&&&&&.Blue&=&CInt(&HF000&&-&&H10000)&&&&‘它们的取值范围是多少?
&&&&&&&&.Alpha&=&0&
&&&&End&With
这个是结束颜色
    .Green&
&&&&&&&&.Blue&
&&&&&&&&.Alpha
这三个颜色的值需要用RGB计算法则转换的这三个颜色的值需要用RGB计算法,请这种方法怎么用,格式是怎样的!最好举例说明一下吧!
比如:初始的颜色(RGB)分别设为什么,终止的颜色分别设为多少?谢谢了!你这样的问题把俺也困惑了好一段时间了,但一切已过去。
'关键点——为起始颜色赋值:
setTriVertexColor&Vert(0),&TranslateColor(rgb(255,0,0))&'起点为红色
setTriVertexColor&Vert(1),&TranslateColor(rgb(0,0,255))&'终点为蓝色
'使用到的API(1个)及函数(3个)
Private&Declare&Function&OleTranslateColor&Lib&"olepro32.dll"&(ByVal&OLE_COLOR&As&Long,&ByVal&hPalette&As&Long,&pccolorref&As&Long)&As&Long
Private&Sub&setTriVertexColor(tTV&As&TRIVERTEX,&lColor&As&Long)
&&&Dim&lRed&As&Long
&&&Dim&lGreen&As&Long
&&&Dim&lBlue&As&Long
&&&lRed&=&(lColor&And&&HFF&)&*&&H100&
&&&lGreen&=&(lColor&And&&HFF00&)
&&&lBlue&=&(lColor&And&&HFF0000)&\&&H100&
&&&setTriVertexColorComponent&tTV.Red,&lRed
&&&setTriVertexColorComponent&tTV.Green,&lGreen
&&&setTriVertexColorComponent&tTV.Blue,&lBlue
Private&Sub&setTriVertexColorComponent(ByRef&iColor&As&Integer,&ByVal&lComponent&As&Long)
&&&If&(lComponent&And&&H8000&)&=&&H8000&&Then
&&&&&&iColor&=&(lComponent&And&&H7F00&)
&&&&&&iColor&=&iColor&Or&&H8000
&&&&&&iColor&=&lComponent
Private&Function&TranslateColor(ByVal&oClr&As&OLE_COLOR,&_
&&&&&&&&&&&&&&&&&&&&&&&&Optional&hPal&As&Long&=&0)&As&Long
&&&'&Convert&Automation&color&to&Windows&color
&&&If&OleTranslateColor(oClr,&hPal,&TranslateColor)&Then
&&&&&&&TranslateColor&=&CLR_INVALID
End&Function咦,这个帖我好象会过了,怎么看不到我的内容呢?
没这么麻烦啊,第一个元素里的颜色分量就是开始数值,第二个是结束数值。每个分量的数值范围是&H0000到&HFF00,只要在这里面随便你给了。province_(雍昊)&说的过于轻松了些吧?你就试试将红、紫两色为起止色画个渐变区域看看,该怎么赋值?轻松吗?只要会用GradientFillRect就没什么难的,不过你说的既要红又要紫色的,我倒是不能理解了。我们不是在讨论颜色渐变填充吗?从红渐变到紫不算离题吧。
“会用GradientFillRect就没什么难的”?你说的不全对。该函数使用胡乱弄出个渐变区域出来自然无话可说,问题在于现实际使用时往往会用一个大家熟悉的RGB颜色值对渐变起止色赋值,这时就需对TRIVERTEX相关顶赋值,怎么赋?关键就是这,难点就在这!MSDN里有说明的,为什么不去看?RGB三色分量的数值范围就是&Hff00到&H0000,还需要再解释下去吗?RGBmsdn有没有说怎么吧我们平常在RGB函数中使用的0-255的颜色分量转换成数据结构TRIVERTEX中的red,green,blue数据项呢?我是没有看到的。
要知道,我们通常是通过opencolor对话框获取一个颜色值,并用它来对TRIVERTEX作相应的赋值的,两者之间是有一个转换才可以的,是吧?只知道三分量值的取值范围是不够的如果知道了取值范围还认为不够那我无话可说了,到此为止吧。请问:xinliangyu,我在程序中如何调用你提供的函数,比如我想让picture控件的颜色渐变?另外你的代码运行时提示Private&Sub&settrivertexcolor(tTV&As&TRIVERTEX,&lcolor&As&Long)编译错误"用户定义类型未定义"?如何解决上面两个问题,我产初学者,谢谢指点!那就定义一下结构体TriverTex:
Private&Type&TRIVERTEX
&&&X&As&Long
&&&Y&As&Long
&&&Red&As&Integer
&&&Green&As&Integer
&&&Blue&As&Integer
&&&Alpha&As&Integer
画渐变色区域的办法你自己在第一楼就有了嘛,即调用GradientFillRect。估计你在起止颜色的指定上有疑惑吧。假如你的起始颜色为rgb(a,b,c),终点颜色为rgb(x,y,z),则你的picture_paint过程应写成如下样子:
Private&Sub&Picture1_Paint()
&&Dim&vert(1)&As&TRIVERTEX
&&&&Dim&gRect&As&GRADIENT_RECT
&&&&With&vert(0)
&&&&&&&&.x&=&0
&&&&&&&&.y&=&0
&&&&End&With
&&&&With&vert(1)
&&&&&&&&.x&=&Picture1.ScaleWidth
&&&&&&&&.y&=&Picture1.ScaleHeight
&&&&End&With
&&&&gRect.UpperLeft&=&0
&&&&gRect.LowerRight&=&1
''''这两句是关键的''''''''''''''''''
&&&&&&setTriVertexColor&vert(0),&TranslateColor(rgb(a,b,c))&&'起始色
&&&&&&setTriVertexColor&vert(1),&TranslateColor(rgb(x,y,z))&&'终止色
''''''''''''''''''''''&&&&
&&&&GradientFillRect&Picture1.hdc,&vert(0),&2,&gRect,&1,&GRADIENT_FILL_RECT_H
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:黄蓝渐变背景PPT模板下载地址
素材格式:ppt
下载次数: 388
需要积分:0
下载地址:

我要回帖

更多关于 金属渐变 的文章

 

随机推荐