社区
C#
帖子详情
GDI绘图:如何创建不规则的区域
daview
2008-12-18 09:09:21
想画一个不规则的窗体,窗体的形状通过一个透明的图片来表示,这个图片的外框非常不规则,该如何创建这个区域?
发现REGION没有办法使用IMAGE对象为区域参考的,GRAPHICSPATH也没有这个功能。
...全文
209
5
打赏
收藏
GDI绘图:如何创建不规则的区域
想画一个不规则的窗体,窗体的形状通过一个透明的图片来表示,这个图片的外框非常不规则,该如何创建这个区域? 发现REGION没有办法使用IMAGE对象为区域参考的,GRAPHICSPATH也没有这个功能。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dayizhixiaotutu
2008-12-19
打赏
举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace APIDemo
{
public partial class Form1 : Form
{
[StructLayout(LayoutKind.Sequential)]
private struct POINTAPI
{
internal int x;
internal int y;
}
[DllImport("gdi32.dll")]
private static extern IntPtr CreatePolygonRgn(
ref POINTAPI lpPoint,
int nCount,
int nPolyFillMode);
[DllImport("user32.dll")]
private static extern IntPtr SetWindowRgn(
IntPtr hWnd,
IntPtr hRgn,
ref Boolean bRedraw);
public Form1()
{
InitializeComponent();
//创建不规则窗体
POINTAPI[] poin;
poin =new POINTAPI [5];
poin[0].x = 90;
poin[0].y = 90;
poin[1].x = this.Width;
poin[1].y = 0;
poin[2].x = Width ;
poin[2].y = this.Height/2;
poin[3].x = Width / 2;
poin[3].y = Height / 2;
poin[4].x = 0;
poin[4].y = Width;
Boolean flag = true;
IntPtr hRgn= CreatePolygonRgn(ref poin[0],8,1);
SetWindowRgn(this.Handle, hRgn, ref flag );
this.BackColor = Color.BurlyWood;
}
//设置窗体显示状态
[DllImport("user32.dll")]
private static extern int SetWindowPos(
IntPtr hwnd,
int hWndInsertAfter,
int x,
int y,
int cx,
int cy,
int wFlags);
private void Start_Btn_Click(object sender, EventArgs e)
{//始终显示在前面
SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 1);
}
private void button1_Click(object sender, EventArgs e)
{
//最小化始终显示在前面
SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 0);
}
}
}
qiying1988
2008-12-19
打赏
举报
回复
up
daview
2008-12-18
打赏
举报
回复
主要是,设置透明后不能改变大小,否则刷新有问题
yagebu1983
2008-12-18
打赏
举报
回复
你到WWW.CNBLOGS.COM搜搜!!!
还没见过你这种问题呢!!
daview
2008-12-18
打赏
举报
回复
我在设置了窗体无边框后,把图片的透明色去掉在通过draw的方式绘制到窗体上,结果看到的是透明的,但实际却不是。
不规则
窗口——
GDI
+实现
本文介绍两种实现
不规则
窗口的方法:基于
GDI
和
GDI
+,并详细解释了使用
GDI
+实现的过程,包括设置窗口样式、加载图像及更新窗口等步骤。
实现MFC中的
不规则
窗口设计与优化
本文聚焦于在MFC中
创建
和实现
不规则
窗口。介绍了
不规则
窗口概念、应用场景,阐述
创建
基本步骤,包括派生CWnd子类、重写窗口过程函数、用
GDI
定义形状。还讲解使用HRGN设置和获取窗口
区域
、处理WM_NCPAINT消息实现自定义绘制,最后给出性能优化策略及实例代码。
WinForm界面设计(
不规则
窗体)
本文详细介绍了如何在Windows Forms环境下
创建
不规则
形状的窗体,以及如何实现
不规则
按钮。通过设置窗体的BackgroundImage、TransparencyKey属性,去掉标题栏并添加代码恢复基本功能,可以
创建
一个
不规则
窗体。同时,通过GraphicsPath类
创建
自定义形状的控件,实现了按钮形状的自由定制。此外,还涵盖了
GDI
+编程的基础技巧,如
创建
绘图
表面、绘制图形、渐变色填充、坐标系统变换以及Alpha混合等,为开发者提供了丰富的图形界面设计知识。
WinForm
不规则
窗体与控件
创建
实战源码
本文围绕.NET Framework的Windows Forms环境,介绍
不规则
界面元素实现。涵盖
不规则
窗体和控件的原理、自定义控件绘制技术、透明效果设置、鼠标键盘事件处理、性能优化策略,还分析了在软件界面设计、游戏开发、专业软件中的应用,助开发者实践自定义图形处理。
GDI
+
绘图
轻松入门[6]-Graphicspath和它的兄弟姐妹Figure、Maker、Region
本文详细介绍了Graphics、GraphicsPath和Region在
GDI
+
绘图
中的应用。GraphicsPath用于绘制
不规则
图形,提供了多种添加图形元素的方法,而Region则用于定义绘制
区域
,可以通过不同方式
创建
,并能进行并集、交集等操作。文章强调了这两个类在图形局部操作和控件刷新中的重要性,特别提到Region在实现控件透明和异形窗口中的作用。
C#
111,130
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章