我要实现win2000登陆时的彩色滚动条。
一些高手应该知道这个问题,以前也有人
问过。如果你不知道彩色滚动条在哪里我告诉
大家就是win2000进入登录界面,输入用户名和密
码按回车后看到的那个窗口,显示正在加载。
我就是要实现显示在该窗口的那个滚动条,有点像win95的登陆图any ideasthanks in advance:)
一些高手应该知道这个问题,以前也有人
问过。如果你不知道彩色滚动条在哪里我告诉
大家就是win2000进入登录界面,输入用户名和密
码按回车后看到的那个窗口,显示正在加载。
我就是要实现显示在该窗口的那个滚动条,有点像win95的登陆图any ideasthanks in advance:)
解决方案 »
- 开发或专业做过验证码识别的高手,进来帮帮忙了!
- listview 如何按列显示?
- 在delphi中如何实现redo和undo功能
- 如何做2个bmp的交替闪烁?
- ??? 请教各位大哥,如何定义这个五维数组 ???
- 用DBNavigator添加数据时,一会DBGrid里面的数据怎么一下就看不到了,怎么解决啊?
- Delphi 关于 copymemory 问题难点
- 简单问题-怎样做一个返回一个StringList型(TStirngs)的函数?在线等待!!!
- 请高手指点-在Delphi5.0里怎么备份Paradox表的数据?
- ******用DELPHI做B/S遇到的困惑!**********
- Tstring的空为'';Tpoint的空为nil;那么Tdatetime的空用什么表示?
- append后一条记录的时候前一条记录不见面了
改变ProgressBar的颜色usesCommCtrl;procedure TForm1.Button1Click(Sender: TObject);begin// Set the Background color to tealProgressbar1.Brush.Color := clTeal;// Set bar color to yellowSendMessage(ProgressBar1.Handle, PBM_SETBARCOLOR, 0, clYellow);end;WinXP风格进度条const{$EXTERNALSYM PBS_MARQUEE}PBS_MARQUEE = 08; procedure TForm1.FormCreate(Sender: TObject);beginSetWindowLong(ProgressBar1.Handle, GWL_STYLE,GetWindowLong(ProgressBar1.Handle, GWL_STYLE) or PBS_MARQUEE);end;//------------------------------------------------------------------------------procedure TForm1.Button1Click(Sender: TObject);vari: Integer;beginfor i := 0 to 30 dobeginSleep(100);ProgressBar1.StepIt;Application.ProcessMessages;end;end;
是那种彩色渐变的。楼上的朋友麻烦你看一下win2000登陆加载时候的彩色滚动条。
那个流光软件的彩色条就是自己用算法实现的
我不知道你说的是哪个条。但是win95/98登录时下面那个进度条我的确修改过。
也非常简单,
要做到这个效果,下面那个条出现的颜色保证没在条之外的地方出现,否则和他相同颜色都会闪。这个图片和别的图片唯一不同的就是调色板。
我忘了哪个字节,有一个自己定义了变色的颜色索引号和数量。系统就会不停的修改这个调色板,让调色板的各个数值循环。这样,显示出来的效果就是下面的条不停的变色。网上曾经有好多这类的工具。win2000如果先这么做我想你可能需要自己修改调色板了。
win2000登陆的时候有一个窗口中部的地主有一个
激变(白、蓝)的滚动条。我不是要修改而是要做这
样的效果如果是win2000系统,大家按一下CTRL+ALT+DEL
键,最顶部是win2000的图标,在它下面就有一白、蓝滚动条
------------------------------------------------------------------
那个彩条最早用在95的启动logo里面,
我很早以前做过一个类似的东西,现在都忘了,大致说一下,
自己创建一个带调色板的DC,
装入图片,设置调色板,
比如那各色条是16色的,那么就在调色板里面把这16色,循环移动,
比如开始是 12345678 ,下一次变成 23456781,在下一次变成34567812……
在调色板中移动的颜色不是全部,只是你需要的那一部分,其余不不变,不然满屏幕都跟着变色了。由于调色板的变化,图片上对应调色板的颜色编号,就对跟着变化,感觉就像那个彩条在闪烁,我一看看过一本BC OWL的书,里面的例子就是做一些星星,模拟它闪烁。这只是个思路,你自己找找相关的资料吧。
原理都说了,就看你的算法如何写了。再说了我的组件包才100RMB,又不贵。你除非要Free的,你只能是自己写了。
我对delphi不熟,是不是用image控件,先设置
一种颜色,然后在对应的位置加亮对吗?
for(int i = 0; i < 宽度; i++)
画直线(i,0,i,高度, color[起始色位置+i Mod color.Length])
然后不断调用
DrawPane,只要改变起始色位置,动画就出来了吧
如果用GIF可以满足要求的话,为何不用呢?
不就是效率低一点吗? 但你计算机或者客户的计算机在乎那点效率吗?
注:如果在很多地方都需要该功能,且图片不一样,或者没有现成的GIF,有不会做或者找不到或者不愿意做的话,
如果非要程序来实现,其他办法不可以接受的情况下
还是用程序来实现吧。
颜色控制可以用数组也可以锻炼自己对基本 DC 设备的编程
自己用一个image画一下就行了..
我就画过....
var
i,j:Integer;
r:TRect;
begin
with Image1 do
begin
j:=Image1.Height;
for i:=0 to 65535 do
begin
Canvas.Brush.Color:=i;
r:=Rect(i*2,0,(i+1)*2,j);
Canvas.FillRect(r);
end;
end;
end;
http://www.sina.com.cn 2001/12/19 17:31 赛迪网-中国计算机报
文/方建文 用API函数实现颜色渐变 方建文 颜色渐变在Windows应用程序中应用广泛,最典型的是窗口标体的背景色及Windows安装窗口的背景色等。本文就这种颜色渐变的实现,提供API函数的实现方法。
在Windows 98或Windows NT 5.0及更高版本中提供了一个新的API函数来实现渐变颜色的填充,这个函数就是GradientFill。这个函数不仅能实现方形的填充,还能实现三角形的填充,所以这种方法更有效率。API声明如下: Public Declare Function GradientFillTriangle Lib "msimg32" Alias "GradientFill" (ByVal hDC As Long, pVertex As TRIVERTEX, ByVal dwNumVertex As Long, pMesh As GRADIENT_TRIANGLE, ByVal dwNumMesh As Long, ByVal dwMode As Long) As Long Public 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 其中GradientFillTriangle用于三角形的填充,GradientFillRect用于矩形填充。hDC是表示要填充对象的窗口句柄;pVertex常常是一个数组,用来存放各顶点的位置及颜色信息,顶点在TRIVERTEX中定义;dwNumVertex表示顶点的个数;pMesh也常常是一个数组结构,表示组成图形的各顶点顺序,表示一个矩形用两个顶点,三角形要用三个顶点;dwNumMesh表示矩形或三角形的个数;dwMode表示填充的模式:水平填充,垂直填充,三角形填充。以下是示例程序: 在这个示例里您可以任意选择两种颜色,然后用两种颜色对一个Picture1进行渐变的填充。 包含的部件 Form1—AutoRedraw:True Picture1---Align:1—Align Top Frame1----Caption:渐变模式 Option1—Caption:由上到下 Value:True Option2---Caption:由左到右 Label1(0)---Caption:颜色1 Command1(0)—Style:1—Graphical Label1(1)---Caption:颜色2 Command1(1)—Style:1—Graphical CommonDialog1--(Microsoft CommonDialog Control6.0)用于选择颜色 Command2----Caption:填充 代码模块Module1中的代码 Option Explicit Public Const GRADIENT_FILL_RECT_H = &&H0 Public Const GRADIENT_FILL_RECT_V = &&H1 Public Const GRADIENT_FILL_TRIANGLE = &&H2‘以上为三种填充模式 Public Type GRADIENT_TRIANGLE Vertex1 As Long Vertex2 As Long Vertex3 As Long End Type Public Type GRADIENT_RECT UpperLeft As Long LowerRight As Long End Type Public Type TRIVERTEX‘顶点类型 x As Long y As Long Red As Integer Green As Integer Blue As Integer Alpha As Integer End Type Public Declare Function GradientFillTriangle Lib "msimg32" Alias "GradientFill" (ByVal hDC As Long, pVertex As TRIVERTEX, ByVal dwNumVertex As Long, pMesh As GRADIENT_TRIANGLE, ByVal dwNumMesh As Long, ByVal dwMode As Long) As Long Public 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 Public Function UIntToInt(UInt As Long) As Integer‘类型转换 If UInt<&&H7FFF Then UIntToInt = CInt(UInt) Else UIntToInt = CInt(UInt - &&H10000) End If End Function Public Function Color16(Clr As Byte) As Integer Color16 = UIntToInt(Clr&&H100&&) End Function 窗体模块代码 Private Sub Command1_Click(Index As Integer) CommonDialog1.CancelError = True On Error GoTo ErrHandler CommonDialog1.Flags = cdlCCRGBInit CommonDialog1.ShowColor‘打开颜色选择对话框 Command1(Index).BackColor=CommonDialog1.Color Exit Sub ErrHandler: End Sub Private Sub Command2_Click() Dim rect(0 To 1) As TRIVERTEX Dim prect As GRADIENT_RECT With rect(0) .x = 0 .y = 0 RGBToColor16 Command1(0).BackColor, .Red, .Green, .Blue End With With rect(1) .x = Picture1.ScaleWidth .y = Picture1.ScaleHeight RGBToColor16 Command1(1).BackColor, .Red, .Green, .Blue End With prect.UpperLeft = 0 prect.LowerRight = 1 If Option1.Value Then GradientFillRect Picture1.hDC, rect(0), 2, prect, 1, GRADIENT_FILL_RECT_V‘竖直填充 Else GradientFillRect Picture1.hDC, rect(0), 2, prect, 1, GRADIENT_FILL_RECT_H‘水平填充 End If End Sub Private Function RGBToColor16(RGBColor As Long, ColorRed As Integer, ColorGreen As Integer, ColorBlue As Integer) As Integer '类型转换 ColorRed = Color16(RGBColor Mod &&H100) ColorGreen = Color16(RGBColor \ &&H100 Mod &&H100) ColorBlue = Color16((RGBColor \ &&H10000) Mod &&H100) End Function
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,m,n:integer;
h:integer;
c:integer;
r:TRect;
begin
h:=Image1.Height;
j:=0;
Image1.Width:=255*2;//----为了好看
for m:=1 to 3000 do
begin
for i:=0 to 255 do
begin
c:=i+j;
if c>255 then c:=255*2-(i+j);
Image1.Canvas.Brush.Color:=RGB(0,c,255);
r:=Rect(i*2,0,(i+1)*2,h);
Image1.Canvas.FillRect(r);
end;
if (j>=0) and (j<255) then n:=1 else j:=0;
inc(j,n);
Image1.Repaint;
end;end;