auxMainLoop(bresenham_arc); //dda(0,0,500,600);
//auxMainLoop(display);
//循环运行display过程,display由用户编写 return(0); }
掌握对线型宽型的控制,将以上各图传入参数中增加线宽参数,查看图形绘制效果。
10
2、在visual c++中的建立控制台项目的步骤:
11
12
实验三 二维图元的填充
一、实验学时 2学时 二、实验类型 设计型实验 三、实验目的和要求
1、掌握二维图元填充的递归算法; 2、掌握二维图元填充的种子填充算法 四、实验内容 构造任意一个边界表示的多边形,假定该多边形内部是四连通的。要求:
1、用递归算法实现对多边形内部的填充,要求内部颜色和边界不一致。(参照教案进行) 2、用种子填充扫描线算法实现多边形内部的填充。 五、建立win32应用程序工程。 1、visual c++ 6.0下的界面
接下来,请按实验二中的方法给上面建立的空项目添加文件“recursion.cpp”,由于同学们初次接触WIN32编程,所以对于下文中很多代码可暂时不要求理解,重点了解红色代码。 递归算法源码如下:
// INCLUDES ///////////////////////////////////////////////
#define WIN32_LEAN_AND_MEAN // just say no to MFC
#include
// DEFINES ////////////////////////////////////////////////
// defines for windows
#define WINDOW_CLASS_NAME \
13
#define WINDOW_WIDTH 400 #define WINDOW_HEIGHT 300
// GLOBALS ////////////////////////////////////////////////
HWND main_window_handle = NULL; // globally track main window HINSTANCE hinstance_app = NULL; // globally track hinstance
void BoundaryFill4(HDC,int,int,COLORREF,COLORREF);
// FUNCTIONS //////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
// this is the main message handler of the system HDC hdc; // handle to a device context HPEN hnewpen; HPEN holdpen;
// what is the message switch(message) { case WM_RBUTTONDOWN: hdc=GetDC(hwnd); hnewpen=CreatePen(PS_SOLID,1,RGB(0,255,0)); holdpen=(HPEN)SelectObject(hdc,hnewpen); // 构造多边形 MoveToEx(hdc,30,40,NULL); LineTo(hdc,60,40); LineTo(hdc,90,100); LineTo(hdc,60,150); LineTo(hdc,30,150); LineTo(hdc,30,40); SelectObject(hdc,holdpen); DeleteObject(hnewpen); ReleaseDC(hwnd,hdc); return(0); break; case WM_LBUTTONDOWN: hdc = GetDC(hwnd); BoundaryFill4(hdc,LOWORD(lParam),HIWORD(lParam),RGB(0,255,0),RGB(255,0,0));
14