设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 一箭烂YiJL
打印 上一主题 下一主题

[通用发布] 启动画面(弹出窗口,RGE最适合)

[复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

11
发表于 2011-10-14 20:22:02 | 只看该作者
不建议用这个api
LZ可以去看看UpdateLayeredWindow这个API我相信效果会比LZ现在用的好很多

点评

当然Win7下面有个API比这个好用多了  发表于 2011-10-14 20:23
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5454
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
12
 楼主| 发表于 2011-10-14 22:04:54 | 只看该作者
yangff 发表于 2011-10-14 20:22
不建议用这个api
LZ可以去看看UpdateLayeredWindow这个API我相信效果会比LZ现在用的好很多 ...
不建议用这个api

是指 SetLayeredWindowAttributes ?

UpdateLayeredWindow 我试过的,但我怀疑半透明问题和能在 HBITMAP ->(CreatePatternBrush) HBRUSH ->(FillRect) HDC 其中。(另外你说的 UpdateLayeredWindow 是要有 GDI+ 支持的那个么?)
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

13
发表于 2011-10-14 22:32:46 | 只看该作者
一箭烂YiJL 发表于 2011-10-14 22:04
是指 SetLayeredWindowAttributes ?

UpdateLayeredWindow 我试过的,但我怀疑半透明问题和能在 HBITMA ...


UpdateLayeredWindow 没有任何问题……WIN2000确实不支持=v=
效果比SetLayeredWindowAttributes 好。
支持半透明,可以传递Png,实现简单,就是不能用WM_PAINT这个比较讨厌……
带上WS_EX_LAYERED样式实现比较简单的说……
  1.         public void SetBits(Bitmap bitmap)
  2.         {
  3.             //if (!haveHandle) return;
  4.             if (!Bitmap.IsCanonicalPixelFormat(bitmap.PixelFormat) || !Bitmap.IsAlphaPixelFormat(bitmap.PixelFormat))
  5.                 throw new ApplicationException("图片必须是32位带Alhpa通道的图片。");
  6.             IntPtr oldBits = IntPtr.Zero;
  7.             IntPtr screenDC = Win32.GetDC(IntPtr.Zero);
  8.             IntPtr hBitmap = IntPtr.Zero;
  9.             IntPtr memDc = Win32.CreateCompatibleDC(screenDC);
  10.             try {
  11.                 Win32.Point topLoc = new Win32.Point(Left, Top);
  12.                 Win32.Size bitMapSize = new Win32.Size(bitmap.Width, bitmap.Height);
  13.                 Win32.BLENDFUNCTION blendFunc = new Win32.BLENDFUNCTION();
  14.                 Win32.Point srcLoc = new Win32.Point(0, 0);
  15.                 hBitmap = bitmap.GetHbitmap(Color.FromArgb(0));
  16.                 oldBits = Win32.SelectObject(memDc, hBitmap);
  17.                 blendFunc.BlendOp = Win32.AC_SRC_OVER;
  18.                 blendFunc.SourceConstantAlpha = 255;
  19.                 blendFunc.AlphaFormat = Win32.AC_SRC_ALPHA;
  20.                 blendFunc.BlendFlags = 0;
  21.                 Win32.UpdateLayeredWindow(Handle, screenDC, ref topLoc, ref bitMapSize, memDc, ref srcLoc, 0, ref blendFunc, Win32.ULW_ALPHA);
  22.             }
  23.             finally
  24.             {
  25.                 if (hBitmap != IntPtr.Zero)
  26.                 {
  27.                     Win32.SelectObject(memDc, oldBits);
  28.                     Win32.DeleteObject(hBitmap);
  29.                 }
  30.                 Win32.ReleaseDC(IntPtr.Zero, screenDC);
  31.                 Win32.DeleteDC(memDc);
  32.             }
  33.         }
复制代码
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5454
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
14
 楼主| 发表于 2011-10-14 22:46:55 | 只看该作者
yangff 发表于 2011-10-14 22:32

UpdateLayeredWindow 没有任何问题……WIN2000确实不支持=v=
效果比SetLayeredWindowAttributes 好。

果然-v-(尤其是支持 PNG),自 XP 引入了 GDI+ ,Win2000 用户的话要自己装咯。
嗯,最初写这个脚本的时候考虑到这个函数的兼容问题= =....
似乎我还真不该用 CreatePatternBrush 和 FillRect。
VX 和 XP 要做 png 加载做 tagBITMAP 还算容易,RGE 在 init 之前就麻烦了,
或许还需要外加一个图像格式转换插件。

点评

ps:”图像格式转换插件“是指转换至 bmp 或是像素点数据流。  发表于 2011-10-14 22:48
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

15
发表于 2011-10-14 23:37:00 | 只看该作者
一箭烂YiJL 发表于 2011-10-14 22:46
果然-v-(尤其是支持 PNG),自 XP 引入了 GDI+ ,Win2000 用户的话要自己装咯。
嗯,最初写这个脚本的时 ...

libPng=v=
或者自行静态反汇编RGE的dll

点评

->yangff 嗯,似乎要一开始初始化类。->yangff 的点评,我知道,我所说的兼容是2000。 ->tamashii 在init前,基本所有RGE类都无法初始化 。(所以我说麻烦)   发表于 2011-10-15 07:08
我表示RGE用的是D3D,本身D3D就支持PNG - -  发表于 2011-10-14 23:58
再说GDI+本来就支持32位的PNG= =  发表于 2011-10-14 23:37
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
543 小时
注册时间
2011-6-25
帖子
441
16
发表于 2012-4-17 18:17:28 | 只看该作者
請問va支持嗎?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
559
在线时间
664 小时
注册时间
2010-6-30
帖子
223
17
发表于 2012-10-8 19:41:06 | 只看该作者
VX 用的话~会和Game.exe一起显示出来.
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
559
在线时间
664 小时
注册时间
2010-6-30
帖子
223
18
发表于 2012-10-12 10:38:58 | 只看该作者
仔细一看是我没有把ShowWindow去掉...求箭烂大叔反汇编软件...Explorer不好用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 15:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表