关于 GDI PS_INSIDEFRAME
来源:互联网 发布:windows一直检查更新 编辑:程序博客网 时间:2024/05/29 03:07
“PS_INSIDEFRAME 创建一支画笔,该画笔在Windows GDI输出函数所产生的封闭形状的框架内画线,此输出函数指定一个限定矩形(例如,Ellipse,Rectangle,RoundRect,Pie和Chord成员函数),当此风格用于没有指定限定矩形的Windows GDI输出函数(例如LineTo成员函数)时,此画笔的绘制区域不受框架的限制。”
关于 PS_INSIDEFRAME 这个话题,google了一下,发现问的人很多,回答得人都是用MSDN原话解释,看MSDN谁都会,和没说一样。
亲自实践了一下原来是用来指示当画笔宽度大于1时候,如何在有边的封闭图形的边界线上分布:
1)当画笔宽度为1时, 使用PS_INSIDEFRAME不使用没有区别
2)当画笔宽度大于1时,使用PS_INSIDEFRAME会导致边缘变宽,宽度从矩形边缘向内增大。
3)当画笔宽度大于1时,如果不使用PS_INSIDEFRAME会导致边缘变宽,从边缘向内侧和外侧同时加宽;如果是偶数宽度,会导致向左或上扩展比向右和下多一个像素;如果宽度是2;只向左和上扩展1个像素
4像素宽的Pen的效果如图所示:
附代码如下:
HPEN hPen1;
HPEN hPen2;
HPEN hPen3;
HBRUSH hBrush1;
void CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
HDC hDC = ::GetDC( m_hWnd ); 1
hPen1 = ::CreatePen( PS_DASH,1,0x000000);//1像素宽度的虚线画笔,用于标记举行的实际边缘
hPen3 = ::CreatePen( PS_SOLID,8,0xff0000);
hPen2 = ::CreatePen( PS_SOLID|PS_INSIDEFRAME,8,0xff0000);
LOGBRUSH br;
br.lbColor = 0x000000;
br.lbStyle = BS_HOLLOW;
br.lbHatch = 0;
hBrush1 = CreateBrushIndirect(&br); //空心画刷,用来防止两个矩形的填充区域相互遮盖
::ReleaseDC( m_hWnd,hDC );
}
void OnDraw( CDC* pDC )
{
HDC hdc = pDC->m_hDC;
::SelectObject(hdc,hBrush1);
::SelectObject( hdc,hPen3 );
::Rectangle(hdc,200,200,300,300);
::SelectObject( hdc,hPen2 );
::Rectangle(hdc,400,200,500,300);
::SelectObject(hdc,hPen1);
::Rectangle(hdc,200,200,300,300);
::Rectangle(hdc,400,200,500,300);
::TextOut( hdc,200,320,"PS_INSIDEFRAME",strlen("PS_INSIDEFRAME"));
::TextOut( hdc,4000,320,"NON-PS_INSIDEFRAME",strlen("NON-PS_INSIDEFRAME"));
}
- 关于 GDI PS_INSIDEFRAME
- 关于PS_INSIDEFRAME
- 关于GDI
- 关于GDI
- 关于GDI+
- 关于GDI初步
- 关于GDI+学习笔记。
- 关于GDI+,随便写写
- 关于GDI+贴图拉伸
- 关于Gdi+和GdiplusStartup
- 关于Gdi+和GdiplusStartup
- 关于C#GDI绘图
- 关于GDI+一般性错误
- C++关于GDI泄露问题
- 关于GDI画图的困惑
- 关于GDI坐标文章二
- C#关于GDI+绘图(一)
- C#关于GDI+绘图(二)
- using ntsd or cdb instead of drwtsn32 to generate a
- vi命令
- memset的使用
- 突然想总结自己
- IXWebHosting优惠码/优惠链接
- 关于 GDI PS_INSIDEFRAME
- Windows Phone 7 开发 31 日谈——第2日:页面导航
- $(addprefix PREFIX,NAMES…)
- 专门替中国人写的英语语法1
- Hello World!
- C#抓屏
- 【原创】网络学习小结
- Microsoft SQL Server 2000 Service Pack 4
- android电话拨打的实现