C# 通过API改变窗体形状

时间:2022-03-08 20:33:42

 [DllImportAttribute   ("gdi32.dll")]  
  public   static   extern   IntPtr     CreateRoundRectRgn(int   nLeftRect,int   nTopRect,int   nRightRect,int   nBottomRect,int   nWidthEllipse,int   nHeightEllipse);   
   
[DllImportAttribute   ("user32.dll")]  
public   static   extern   int   SetWindowRgn(IntPtr   hWnd,IntPtr   hRgn,   bool   bRedraw);  
   
   
   
  Fom1   fl   =   new   Form1();       
  IntPtr   regionHandle   =CreateRoundRectRgn(0,0,fl.Width,fl.Height,20,20);  
  Region   roundRegion   =   null;  
  roundRegion   =   Region.FromHrgn(regionHandle);  
  SetWindowRgn(Handle,regionHandle,true);

 

 

 

WinAPI: SetBkMode - 设置背景模式

WinAPI: GetPath - 获取路径中的点

WinAPI: FlattenPath、WidenPath

WinAPI: CreateRectRgn、CreateRectRgnIndirect、FillRgn、FrameRgn - 建立矩形区域

WinAPI: CreateRoundRectRgn - 建立圆角矩形区域

WinAPI: CreatePolygonRgn - 建立多边形区域

WinAPI: CreatePolyPolygonRgn - 建立多个多边形构成的区域

WinAPI: CombineRgn - 区域合成

WinAPI: SetRectRgn - 将区域转换成矩形区域

WinAPI: PtInRegion、OffsetRgn

 

 

CombineRgn 将两个区域组合为一个新区域

CombineTransform 驱动世界转换。它相当于依顺序进行两次转换

CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景

CreateDC 为专门设备创建设备场景

CreateEllipticRgn 创建一个椭圆

CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域

CreateIC 为专用设备创建一个信息场景

CreatePolygonRgn 创建一个由一系列点围成的区域

CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的

CreateRectRgn 创建一个矩形区域

CreateRectRgnIndirect 创建一个矩形区域

CreateRoundRectRgn 创建一个圆角矩形

DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源

DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标

EqualRgn 确定两个区域是否相等

ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图

ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域

ExtCreateRegion 根据世界转换修改区域

ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区

FillRgn 用指定刷子填充指定区域

FrameRgn 用指定刷子围绕指定区域画一个外框

GetBoundsRect 获取指定设备场景的边界矩形

GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形

GetClipRgn 获取设备场景当前剪裁区

GetDC 获取指定窗口的设备场景

GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了的选项

GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)

GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息

GetGraphicsMode 确定是否允许增强图形模式(世界转换)

GetMapMode 为特定设备场景调入映象模式

GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区

GetRgnBox 获取完全包含指定区域的最小矩形

GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新

GetViewportExtEx 获取设备场景视口(viewport)范围

GetViewportOrgEx 获取设备场景视口起点

GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景

GetWindowExtEx 获取指定设备场景的窗口范围

GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点

GetWindowRgn 获取窗口区域

GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换

IntersectClipRect 为指定设备定义一个新的剪裁区

InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画

InvertRgn 通过颠倒每个像素值反转设备场景指定区域

LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标

ModifyWorldTransform 根据指定的模式修改世界转换

OffsetClipRgn 按指定量平移设备场景剪裁区

OffsetRgn 按指定偏移量平移指定区域

OffsetViewportOrgEx 平移设备场景视口区域

OffsetWindowOrgEx 平移指定设备场景窗口起点

PaintRgn 用当前刷子背景色填充指定区域

PtInRegion 确定点是否在指定区域内

PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)

RectInRegion 确定矩形是否有部分在指定区域内

RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)

ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景

RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景

SaveDC 将指定设备场景状态保存到Windows设备场景堆栈

ScaleViewportExtEx 缩放设备场景视口的范围

ScaleWindowExtEx 缩放指定设备场景窗口范围

ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形

SelectClipRgn 为指定设备场景选择新的剪裁区

SetBoundsRect 设置指定设备场景的边界矩形

SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)

SetMapMode 设置指定设备场景的映射模式

SetRectRgn 设置区域为指定的矩形

SetViewportExtEx 设置设备场景视口范围

SetViewportOrgEx 设置设备场景视口起点

SetWindowExtEx 设置指定设备场景窗口范围

SetWindowOrgEx 设置指定设备场景窗口起点

SetWindowRgn 设置窗口区域

SetWorldTransform 设置世界转换

ValidateRgn 激活窗口中指定区域,把它从刷新区移走

WindowFromDC 取回与某一设备场景相关的窗口的句柄