Delphi异形窗口之PNG】的更多相关文章

//1.单元内容 unit UnitAlienForm; interface uses Windows, Forms, Classes, Graphics; //从文件加载PNG procedure AlienForm_PNGFromFile(AForm : TForm; AFileName : String); //从资源加载PNG ); //从图像对象加载 procedure AlienForm_PNGFromGraphic(AForm : TForm; AGraphic : TGraphi…
同事演示了一个.NET的的PNG异形窗口.挺漂亮.于是也想用Delphi显摆一个. 关于Delphi用PNG做异形窗口的资料有不少.都是用GDIPlus或者TPNGImage组件加载PNG图像做的.但是我很懒,不想引用的GDIPlus,也不想去找PNGImage下载. 好在从Delphi2009开始Delphi中就收购了PNGImage,并集成到后继的版本中.Delphi2010又包装了微软的IWICImagingFactory接口,这样处理PNG的工作就交给操作系统去做了. 函数很简单一共就几…
项目马上上线,因为之前的登录器是使用VS2010的MFC做的,在很多电脑上会提示缺失mfcXXXX.dll,中间找寻这种解决方案,最后确定将vcredist2010_x86和我的程序打包到安装包里面,每次安装的时候默认先安装vcredist2010_x86. 由此,经常被杀毒软件阻止,而且还有x64 or x86的区别. 同时,甲方想要一个精灵,类似于QQ宠物,于是PL决定使用精灵模型+异形窗口做一个桌面宠物.于是,异形窗口成了此物的基础. 首先,我们需要了解的是,异形窗口是什么.简单来说,即将…
我们先通过简单的效果展示,切换展示不同图片: 我们先定义图片资源文件,我们可以在window资源中定义,下面的在app.xaml文件来定义: <Application x:Class="WPF异形窗口演示.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml…
这里讨论的只是Windows平台上的实现. 在QT中绘制异形窗口,只要设定 windowFlag 为 CustomizeWindowHint,再结合setMask()就可以做出各种奇形怪状的窗口.相对来说比较麻烦的, 是进行窗口拖动和缩放的处理. 在 Windows SDK 和 MFC 中比较容易,只要处理 WM_NCHITTEST,返回相应的测试值就可以了.幸运的是,QT中也提供了直接处理各平台消息的方法,在 Windows下只需要重载winEvent方法. 下面给出了示例代码: // inc…
源:Delphi 悬浮窗口.浮动窗口的实现 浮动窗体的实现 http://blog.tianya.cn/blogger/post_show.asp?BlogID=68097&PostID=806089 需要一个这样的窗体:a:没有标题栏; b:可以改变大小; c:不在任务栏上显示图标; d:如果不是主窗体,它的最小化不受主窗体的限制; e:在最顶端显示 处理:a:不在任务栏出现的,只要设置窗体的属性为ToolWindow就可以了.b:要想使窗体脱离主窗体的限制,必须修改它的ParentWnd,使…
  求助:有谁知道Delphi中窗口的创建过程,此“窗口”不仅仅指 TForm 类型, 还包括一般的窗口控件,如TButton,TEdit等等,希望有能够十分详细的运作 过程,比如说CreatParams,CreateWindowHandle等等函数的调用情况,可能 调试过 Delphi VCL 源代码这个问题才能解决此问题,我很想知道.谢谢! 你的问题只需要从对象的概念来理解也就好了呀! 其实在Delphi中,所有的VCL不就是一个个对象么? 它有图形外观也是因为它能够响应消息呀!(WM_Pa…
大家都见过在windows下各种气泡窗口.输入法窗口以及其他一些窗口,这些窗口看起来不像传统的windows窗那样,上面是标题栏,下面是窗口的客户区.这些窗口形状各异,可以是一个多边形,一幅图,甚至是一个人物画像等.这些异形窗口是怎么实现的呢?下面我们就来实现这个奇异形状的窗口. 其实在windows下实现特殊的窗口并不困难,有两种办法可以实现: 通过创建路径和区域.合并区域的办法.创建区域的API有很多,比如CreateRectRgn,CreateRoundRectRgn,CreateElli…
delphi xe6 窗口 visible 不能隐藏 解决 在工程代码里面加上 Application.ShowMainForm := false;…
前面提到,我们可以用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明的效果 对于SetWindowRgn,它通过一个Rgn来设置区域,这个Rgn一般可以从图片中读取,在这张图片中,将不需要显示的区域标记为一种特殊的颜色,这里有个问题,必须保证这种颜色没有被正常的区域使用,否则会被误伤.为了解决这个问题,可以考虑用两张图片,增加一张单色的掩码图,这种方案带来了额外的管理开销.SetWindowRgn的好处是效率较高,对于大部分自绘的皮肤,一般只有四…
Delphi的VCL框架在创建应用时TApplication是一个自动创建的隐藏窗口,其它创建的窗口是自动以该窗口为窗口,这就导致创始的主窗口在任务栏的系统菜单只有三项,只要在主窗口的Create事件中将系统菜单用Application的系统菜单替换,并将SysCommand消息转发到主窗口就正常了. unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Fo…
有的时候我们要实现一个悬浮窗口,并使该窗口一直显示在桌面的工作区内.即整个窗口要一直显示在屏幕上,不能超出屏幕的上下左右边缘.此功能的实现也不难,我们需要自己写代码来响应窗口的WM_WINDOWPOSCHANGING消息,话不多说,详细代码如下供参考: 新建一个工程,并把下面代码拷贝到工程中,运行……           Delphi/Pascal   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27…
http://bbs.csdn.net/topics/200053917 有两个窗口formLogin是登陆窗口,formMain是主窗口我想让formMain显示出来,并且formLogin窗口关闭或者隐藏这牵扯到 如果是关闭 在formMain就不用去管formLogin的问题了如果是隐藏那formMain就还要关闭formLogin窗口 我是这样想的 本人对delphi的机制不太了解~! 我在formLogin中添加       formMain:=formMain.Create(Appl…
一定有很多人看到过一些奇形怪状的窗体,例如一些屏幕精灵.其实实现起来非常容易,做到三点就好啦.下面我使用Delphi做了一个VCL控件(TBmpShape),你只需要指定一幅图片就可以将窗体变成你的图片的形状. 1.准备一幅位图图片,一定要BMP格式的 2.将VCL控件放在你的窗体(FORM)上,注意不能是其他的容器,设置PICTURE属性,指定制作好的图片. 3.设置图片的背景颜色,必须是你的图片的背景颜色准确值 4.在本窗体的FormCreate事件中写一行代码 BmpShape1.Appl…
#region UpdateLayeredWindow #region 重写窗体的 CreateParams 属性 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x00080000; // WS_EX_LAYERED 扩展样式 //无边框任务栏窗口最小化 const int WS_MINIMIZEBOX = 0x00020000; /…
一.运行效果图(在Win8里的运行效果,在XP里运行就不能体现出来,因为我使用的XP的界面效果) 二.编译环境:Visual Basic 6.0 (SP6) 三.实现原理:通过区域合并 四.使用API函数:CreateRectRgn.CreateRoundRectRgn.CombineRgn.SetWindowRgn,其声明及说明如下: 函数:CreateRectRgn  声明:Declare Function CreateRectRgn Lib "gdi32" Alias "…
dwExStyle: :指定窗口的扩展风格.该参数可以是下列值: WS_EX_ACCEPTFILES:指定以该风格创建的窗口接受一个拖拽文件. WS_EX_APPWINDOW:当窗口可见时,将一个顶层窗口放置到任务条上. WS_EX_CLIENTEDGE:指定窗口有一个带阴影的边界. WS_EX_CONTEXTHELP:在窗口的标题条包含一个问号标志.当用户点击了问号时,鼠标光标变为一个问号的指针.如果点击了一个子窗口,则子窗口接收到WM_HELP消息.子窗口应该将这个消息传递给父窗口过程,父窗…
implementation {$R *.dfm}  ---- 带窗口的 dfm -- 一般的 windows 窗口 {$R *.fmx}  ---- 带窗口的 fmx -- 一般的 FireMonkey 窗口 ****  Unit 文件 即 Pas 文件的 implementation 不带这个标志, 就是Pas 不带任何窗口的文件…
一.去掉窗口最大化,最小化.关闭 borderIcons:biSystemMenu:false borderStyle:bsSizeable 二.主子窗口 主main: //调用子窗体procedure TFrmMain.CallChildForm(FormChild: TFormClass; var Reference);var i: Integer;begin if MDIChildCount >0 then for i := 0 to MDIChildCount-1 do if MDICh…
  Delphi(68)  procedure TForm1.ShowForm2;begin  Self.Enabled := False;  try    with TForm2.Create(nil) do    begin      try        if ShowModal = mrOk then          // Returned OK. Do something;      finally        Free;      end;    end;  finally   …
1.格局还原procedure TFrmStyleProp.btnNewClick(Sender: TObject); //声明var iniFile : TIniFile; idx : integer; ctrl : TControl;begin //格局还原 iniFile := TIniFile.Create(ChangeFileExt(Application.ExeName,'-posi.ini')) ; try for idx := 0 to -1 + Self.ComponentCo…
unit ScWndProc; interface uses Forms, Messages; const DDGM_FOOMSG = WM_USER; //自定义消息 implementation uses windows,sysutils,Dialogs; var WProc : Pointer; function NewWndProc(handle: hWnd; msg,wParam,lParam: LongInt): LongInt ; stdcall; begin if msg = D…
http://blog.163.com/t_form/blog/static/12348523220115132155814/ function EnumWindowsProc_2(hwnd: HWND; lParam: LPARAM): Boolean; stdcall; var  buf: array[Byte] of Char;begin  GetWindowText(hwnd, buf, SizeOf(buf));  if buf <> '' then  begin    if pos…
unit xDrawForm; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Menus, Graphics,GDIPOBJ,GDIPAPI,GDIPUTIL; type TwwGDIImage = class public n_Pos_X : Integer; n_Pos_Y : Integer; n_Width : Integer; n_Height : Integer; GPImageNormal…
参考: http://www.delphibbs.com/delphibbs/dispq.asp?lid=2190768 Windows 2000后,为了支持类似MAC界面的Alpha通道混合效果,提供了GDI+,提供了很多的界面功能函数,可以实现很好的界面效果.例如可以使用UpdateLayeredWindow来实现窗体的颜色透明.但是一旦 Form 被定义为利用 LayeredWindow ,窗口的绘图不再响应沿用多年的 WM_Paint 消息. UpdateLayeredWindow(hw…
Delphi Code Editor 之 编辑器选项 可从Code Editor的右键菜单中选择“Properties”菜单项来查看编辑器选项.也可以从主菜单[Tools | Editor Options…]打开编辑器选项对话框.如下图: 下面分别来讲述各个页面. 1.General页面 这两个页面用于控制编辑器的工作方式.其中包括很多选项. 页面下面的“Editor SpeedSetting”组合框,可从里面选择多种设置,如下图: 如果改变此组合框的设置,上面的“Editor options”…
方法一: 转载:http://blog.csdn.net/chenlycly/article/details/46447297 转载:http://blog.csdn.net/harvic880925/article/details/8925650 方法二: 转载:http://blog.csdn.net/xdrt81y/article/details/22063479 搞Windows程序的人尽皆知分层窗口能够实现很多不错的效果,之前看过一些异形窗口的实现,所以就手痒也想自己搞一个玩一玩.自己…
一.        创建互斥对象 在工程project1.dpr中创建互斥对象 Program project1 Uses Windows,Form, FrmMain in 'FrmMain.pas' {MainForm}; {$R *.res} var hAppMutex: THandle; //声明互斥变量 begin hAppMutex := CreateMutex(nil, false,’projectname’); //创建互斥对象projectname工程名称 if ( (hAppM…
使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果. 在很多情况下,界面的漂亮与否,取决于PS的制作及创意,而界面编程所需要做的就是将图片完整无缺的展示给用户. 分层窗口的好处就是:用一层窗口来描绘窗口背景,以确保背景图片不会失真,而另一层窗口用来放置控件,除控件之外的区域全是透明的.为什么要这么麻烦呢?因为我们将要用到UpdateLayeredWindow来实现窗口背景描绘,一旦执行这个函数后,…
Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要做出一些限制,让程序只能够运行一个实例.在Delphi编程中,笔者总结出了以下几种方法: 一. 查找窗口法 这是最为简单的一种方法.在程序运行前用FindWindow函数查找具有相同窗口类名和标题的窗口,如果找到了,就说明已经存在一个实例.在项目源文件的初始化部分添加以下代码: Program On…