unit CreateImageForm;

interface
uses
Windows, SysUtils, Variants, Classes, Graphics;

procedure CreatRgnForm( Bmap: TBitMap; WColor: TColor; hand:THandle);

implementation

procedure CreatRgnForm( Bmap: TBitMap; WColor: TColor; hand:THandle);
var
rgn: HRgn;
dc, cdc: HDC;
x, y: integer;
p: Tpoint;
line: boolean;
color: Tcolor;
begin
dc := GetWindowDc(hand);
cdc := CreateCompatibleDc( dc );
SelectObject( cdc, Bmap.Handle );
//WColor := Img.Picture.Bitmap.Canvas.Pixels[0, 0];
//WColor := GetPixel( cdc, 0, 0 );
BeginPath( dc );
for x := 0 to Bmap.Width - 1 do
begin
line := false;
for y := 0 to Bmap.Height - 1 do
begin
color := GetPixel( cdc, x, y );
if not( color=WColor) then
begin
if not line then
begin
line := true;
p.X := x;
p.Y := y;
end;
end;

if ( color=WColor)or( y=Bmap.Height - 1 ) then
begin
if line then
begin
line := false;
MoveToEx( dc, p.X, p.Y, nil );
LineTo(dc, p.X, y );
LineTo(dc, p.X + 1, y );
LineTo(dc, p.X + 1, p.Y );
CloseFigure( dc );
end;
end;
end;
end;
EndPath( dc );
Rgn := PathToRegion( dc );
ReleaseDc( hand, dc );
SetWindowRgn( hand , rgn, true );
end;

end.

如此调用就可以了
procedure TForm1.FormCreate(Sender: TObject);
var
color: TColor;
w1: TBitMap;
begin
w1 := TBitMap.Create;
w1.Assign( Image1.Picture.Bitmap );
color := w1.Canvas.Pixels[0, 0];
CreatRgnForm( w1, color, handle);
end.

delphi根据不同图片生成不规则窗口的实现(仅限于BMP格式)的更多相关文章

  1. QT笔记之不规则窗口的实现

    QT实现的不规则窗口,是根据图片的形状显示 1.去标题栏 2.设置窗口背景为透明色 3.最后给窗口设置背景色 注:背景图为镂空的 格式为.png 图片资源下载:http://pan.baidu.com ...

  2. [原创]DELPHI木马DIY之生成服务端

    文章作者:上帝的禁区信息来源:邪恶八进制信息安全团队(www.eviloctal.com)DELPHI木马DIY之生成服务端   我在这里就生成简单的服务端,为什么不先讲服务端的隐藏?因为我觉得生成服 ...

  3. QT:不规则窗口的实现

    主要思路:1:将窗体设为Qt::FramelessWindowHint(去掉标题栏).2:用一幅有部分区域是透明的图片作为程序的界面,并将图片透明的地方设为穿透. 3:重载程序的鼠标事件. 运行时截图 ...

  4. thinkphp3.2与phpexcel带图片生成 完美案例

    thinkphp3.2与phpexcel完美案例 // 导出exl public function look_down(){ $id = I('get.id'); $m = M ('offer_goo ...

  5. phpcms v9图片生成缩略图变成黑色解决方法

    今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...

  6. 将图片在指定窗口中显示-OpenCV应用学习笔记一

    1.OpenCV模块划分 OpenCV其实就是一堆用C和C++语言来实现计算机视觉算法的源代码文件:例如C接口函数cvCany()实现了Canny边缘提取算法,我们可以直接将这些源代码添加到自己的软件 ...

  7. PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)

    (转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...

  8. 验证码图片生成工具类——Captcha.java

    验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. 源码如下:(点击下载  Captcha.java) import java. ...

  9. Windows SDK 实现不规则窗口介绍

    不规则窗口在程序界面设计中能提供非常好的用户体验,以下是我程序运行时的效果图: 以下是代码,注意需要修改一些简单的位置,如资源ID,项目的头文件等,这些是根据你创建的win32程序的项目名改变的,我的 ...

随机推荐

  1. LayUI最近遇到的问题以及处理

    layui是我最近才接触的..也是新项目中用到的后台前端框架..与easyui有些类似..在这段时间的使用中,经常会碰到大大小小的问题.. 1.选显卡切换又是加载数据表格.分页条不显示 2.layui ...

  2. mongodb 可视化工具

    mongodb是用命令行输入的,有些人可能不太习惯,我自己找了下mongodb的一些可视化工具,发现了一款adminmongo很好用,这里介绍给你们用一下. github地址:https://gith ...

  3. io.File+递归

    import java.io.File ; import java.io.IOException ; public class FileDemo11{ public static void main( ...

  4. 【leetcode】958. Check Completeness of a Binary Tree

    题目如下: Given a binary tree, determine if it is a complete binary tree. Definition of a complete binar ...

  5. MySQL - 两种存储引擎 (MyISAM PK InnoDB) + MVCC

    总结 1.两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务.两者最大的区别就是InnoDB支持事务,和行锁. 2.InnoDB采用MVCC(Multi-Version Concur ...

  6. Java桌球小游戏1

    版本三.使小球动起来package cn.xjion.game;/** * 水平滚动 * @author xjion * */import java.awt.*;import javax.swing. ...

  7. C语言新手写扫雷攻略3

    界面绘制好后,雷数也布置了,接下来就是游戏的运行过程了,今天先不说具体过程,再来看看需要用到的辅助函数 先是简单的画红旗,鼠标右键的功能是画红旗,至此我们都是在使用函数自己绘图,效率是低,但有助于理解 ...

  8. TCP/IP报文格式

    1.TCP首部格式 1.1 格式各字段含义 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程. 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应 ...

  9. 3.5 compose redux sages

    基于 redux-thunk 的实现特性,可以做到基于 promise 和递归的组合编排,而 redux-saga 提供了更容易的更高级的组合编排方式(当然这一切要归功于 Generator 特性), ...

  10. JSoup安装

    要运行任何jsoup示例,需要先安装好jsoup相关Jar包.到目前为止(2017年05月),jsoup的当前版本是1.10.2.0.安装jsoup主要有三种方法: 通过Maven的pom.xml配置 ...