zoukankan      html  css  js  c++  java
  • Wu反走样算法绘制圆(C++/MFC实现)

    Wu反走样圆###

    原理:参考Bresenham算法,在主位移过程中计算出离理想圆最近的两个点,赋予不同的亮度值,绘制像素点即可!

    MFC 中CXXXView类中添加函数:
    //Wu算法画反走样圆
    void CMy3_4View::OnwuCir() 
    {
    	// TODO: Add your command handler code here
    	yoci5 dlg;//定义对话框 对象 yoci5:对话框类
    	if(IDOK==dlg.DoModal())
    	{
    		int y=dlg.m_R;//对话框输入半径、圆心
    		double e;
    		for(int x=0; x<=y; x++)//画1/8圆
    		{
    			//算上下两点到理想圆的距离,作为亮度参数
    			e=y-sqrt(dlg.m_R*dlg.m_R-(x+1)*(x+1));
    
    			if(e>=1)
    			{
    				e--;
    				y--;
    			}
    			div_8(x, y, e);
    			div_8(x, y-1, 1-e);
    		}
    	}
    }
    
    //8分法画圆
    void CMy3_4View::div_8(int x, int y, double d)
    {
    	CDC *pDC = GetDC();
    	//定义二维坐标系
    	CRect rect;
    	GetClientRect(&rect);
    	pDC->SetMapMode(MM_ANISOTROPIC);
    	pDC->SetWindowExt(rect.Width(), rect.Height());
    	pDC->SetViewportExt(rect.Width(), -rect.Height());
    	pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
    	rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);
    
    	COLORREF clr = RGB(d*255, d*255, d*255);
    	pDC->SetPixelV(x, y, clr);
    	pDC->SetPixelV(y, x, clr);	//关于y=x对称
    	pDC->SetPixelV(y, -x, clr);	
    	pDC->SetPixelV(x, -y, clr);	//关于x=0对称
    	pDC->SetPixelV(-x, -y, clr);//关于原点对称
    	pDC->SetPixelV(-y, -x, clr);
    	pDC->SetPixelV(-y, x, clr);	
    	pDC->SetPixelV(-x, y, clr);	//关于y=0对称
    
    	pDC->DeleteDC();
    }
    
    附上效果图:
    
    1.对话框
    ![](https://img2018.cnblogs.com/blog/1027722/201810/1027722-20181009200628145-709943253.jpg)
    
    2.反走样圆
    
    https://img2018.cnblogs.com/blog/1027722/201810/1027722-20181009200108679-1901193419.jpg(复制链接到搜索框即可查看)
    
    
    VC++ 6.0编译通过!如有问题,请留言。
    
  • 相关阅读:
    XML与JSON的区别?各自有哪些优缺点?
    js数组操作(增、删、改、查)
    Ajax缓存原理
    Ajax的跨域问题分析
    简单理解javascript的闭包
    CSS的导入方式:link与import方式的区别
    谈谈iframe的优缺点
    winform全局异常捕获
    Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析
    解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误
  • 原文地址:https://www.cnblogs.com/yocichen/p/9716823.html
Copyright © 2011-2022 走看看