怎样使显示器上,蒙上一层透明的颜色?(100分)

  • 主题发起人 梅游刃
  • 开始时间

梅游刃

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一些图片是单色的,
只要让显示器蒙上一层透明的颜色就可以了。
请各位帮忙!
 
不知道你想说什么?
不过去到Photoshop,给图片加一个新层,填充上你喜欢的颜色,然后改变刚才这个层的透明度.
搞定
 
是的,PHOTOSHOP很好搞!
显示器不是会有偏色吗?
我现在要的就是偏色的效果。
但是偏的颜色是自定义的。
 
用Delphi自带的控件往上蒙恐怕不太好蒙,还要透明度的!
看看有没有第三方的东东~
另外,假如你用D6,设置一下窗体的 AlphaBlend 值,看看有没有你要的效果 [:)]
 
查查 AlphaBlend 这个 API
 
这个应用,应该是对显示器的显示属性进行修改。
 
如果这样,那么:

这个-基本上-很--难!
 
兄弟,我这有这方法:

第一步;将form1设为最大化,并去除标题栏;这样在属栏中就可以设置
第二步:用下面的方法将Form1设为单色透明;
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

const
WS_EX_LAYERED = $80000;
AC_SRC_OVER = $0;
AC_SRC_ALPHA = $1;
AC_SRC_NO_PREMULT_ALPHA = $1;
AC_SRC_NO_ALPHA = $2;
AC_DST_NO_PREMULT_ALPHA = $10;
AC_DST_NO_ALPHA = $20;
LWA_COLORKEY = $1;
LWA_ALPHA = $2;
ULW_COLORKEY = $1
ULW_ALPHA = $2
ULW_OPAQUE = $4
//新增加的常量定义
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函数声明

var
Form1: TForm1;

implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var l:longint;
begin
l:=getWindowLong(Handle, GWL_EXSTYLE);
l := l Or WS_EX_LAYERED;
SetWindowLong (handle, GWL_EXSTYLE, l);
SetLayeredWindowAttributes (handle, 0, 180, LWA_ALPHA);
//第二个参数是指定透明颜色 //
//第二个参数为0则使用第四个参数设置alpha值,从0到255
//第三个参数是透程序()
end;
end.

如果可以的话,快给分,我没钱买米了;都问光了
 
楼上的效果不错啊,
 
laohe:
给分没问题,还可以多给,我很富裕咯。
只是报了,“错误的输出user32.dll:SetLayeredWindowAttributes”
这个错误,嘿。。。小弟很菜。现象明白,可不知怎么改!

还有,给显示器蒙上一层透明色后,再运行其它的程序没有问题吧!

 
function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函数声明

定义有没有设置好,我发表这文章时已测试了;可以用;

不过第二点很可惜,这是采用窗口遮盖式的方法设计的,不能软件不能使用了;

我没有注意到这一点,以为你是搞演示用,

那就只能修改显示器的三色的值了,这个我就无能为力了;

看来这分还真不好拿!
 
你还是去找找能调节显示器色温或RGB三个值比例的工具软件吧,这种东东还是有的。
有些显卡本身的驱动程序就带这些功能。
当然,如果你的显示器比较好的话,它本身也有色温调节功能。
 
找不同颜色的塑料纸即可,呵呵




开个玩笑
 
各位DFW:
我问的是不是一个外行的问题?!:)
钱多钱少没什么问题了。还得请各位多一点同情心。
我们是做事的别人怎么说,我们怎么,实在不行,也不至于圈被盖,对不!?
哈哈。。。够逊的了!

 
win2000下半透明窗体

const
gwl_exstyle=-20;
ws_ex_layered=$80000;
lwa_alpha=$2;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(Form1.Handle, 0, 200, LWA_ALPHA);
end;
 
老何说得对!
就是就是修改显示器三基色(RGB)的值!
 
不用费很大的劲吧:下面得的函数就可以实现随机设定窗体的透明色,还有,窗体的颜色深度
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Self.Hide;
AlphaBlend:=false;
Form1.Color:=RGB(random(255),random(255),random(255));
AlphaBlendValue:=Random(255);
AlphaBlend:=true;
Self.Show;
end;
 
不是修改窗体显示属性,

而是调整显示器显示的三基色值,我曾看过有的显卡可以在显示属性里手动调整。
所以理论上可以写程序实现的!
 
呵呵,给显示器加个彩色玻璃罩子不就行了, ^_*
 
顶部