📄 graph.c
字号:
// Graph1 ---- Graph6
// 练习模块——图形功能
#include <windows.h>
#include "math.h"
#define PI 3.14159265
void Graph1(HWND hWnd)
{
HDC hDC;
COLORREF clrref;
int i,j,x,y,n;
x=50; y=150;
n=400;
hDC = GetDC(hWnd);
SetMapMode(hDC,MM_TEXT);
clrref=RGB(0,0,255);
for (i=-20;i<n+20;i++) {
SetPixel(hDC,x+i,y,clrref);
}
clrref=RGB(255,0,0);
for (i=0;i<n;i++) {
j=(int) (50.0*(n-3*i/4)/n*sin(PI*i/(n/15)));
SetPixel(hDC,x+i,y-j,clrref);
}
ReleaseDC(hWnd,hDC);
}
void Graph2(HWND hWnd)
{
LOGPEN lpGreen = {PS_SOLID,1,1,RGB(0,255,0)},
lpBlack = {PS_SOLID,1,1,RGB(0,0,0)};
HPEN lpGreenPen,lpBlackPen;
HDC hDC;
int i,j,x,y,n;
x=50; y=325;
n=400;
hDC = GetDC(hWnd);
lpGreenPen = CreatePenIndirect(&lpGreen);
lpBlackPen = CreatePenIndirect(&lpBlack);
SelectObject(hDC,lpGreenPen);
MoveToEx(hDC,x,y,NULL);
for (i=0;i<n;i++) {
j=(int) (50.0*(n-3*i/4)/n*sin(PI*i/(n/15)));
LineTo(hDC,x+i,y-j);
}
SelectObject(hDC,lpBlackPen);
MoveToEx(hDC,x-20,y,NULL);
LineTo(hDC,x+n+20,y);
ReleaseDC(hWnd,hDC);
}
void CrossLine(HDC hDC,int x,int y)
{
MoveToEx(hDC,x-5,y,NULL);
LineTo(hDC,x+6,y);
MoveToEx(hDC,x,y-5,NULL);
LineTo(hDC,x,y+6);
}
void Graph3(HWND hWnd)
{
LOGPEN lpRed = {PS_SOLID,1,1,RGB(255,0,0)},
lpGreen = {PS_SOLID,1,1,RGB(0,255,0)},
lpBlue = {PS_SOLID,1,1,RGB(0,0,255)},
lpBlack = {PS_SOLID,1,1,RGB(0,0,0)};
HDC hDC;
HPEN lpRedPen,lpGreenPen,lpBluePen,lpBlackPen;
int x,y,x1,y1,r;
x=175; y=450;
r=150;
x1=x+r; y1=y+r;
hDC = GetDC(hWnd);
lpRedPen = CreatePenIndirect(&lpRed);
lpGreenPen = CreatePenIndirect(&lpGreen);
lpBluePen = CreatePenIndirect(&lpBlue);
lpBlackPen = CreatePenIndirect(&lpBlack);
SelectObject(hDC,lpBlackPen);
SelectObject(hDC,lpRedPen);
CrossLine(hDC,x1,y);
Arc(hDC,x,y,x1,y1,x1,y,x,y);
SelectObject(hDC,lpGreenPen);
CrossLine(hDC,x,y);
Arc(hDC,x,y,x1,y1,x,y,x,y1);
SelectObject(hDC,lpBluePen);
CrossLine(hDC,x,y1);
Arc(hDC,x,y,x1,y1,x,y1,x1,y1);
SelectObject(hDC,lpBlackPen);
CrossLine(hDC,x1,y1);
Arc(hDC,x,y,x1,y1,x1,y1,x1,y);
ReleaseDC(hWnd,hDC);
}
void Graph4(HWND hWnd)
{
HDC hDC;
HBRUSH hBrush;
HPEN hPen;
int x,y;
x=500; y=0;
hDC = GetDC(hWnd);
hPen =GetStockObject(BLACK_PEN);
hBrush=GetStockObject(HOLLOW_BRUSH);
SelectObject(hDC,hPen);
SelectObject(hDC,hBrush);
Rectangle(hDC,x,50,x+50,100);
RoundRect(hDC,x,150,x+50,200,15,15);
Ellipse(hDC,x+75,50,x+125,100);
Chord(hDC,x+75,150,x+125,200,x+75,150,x+125,200);
Pie(hDC,x+150,50,x+200,100,x+150,50,x+200,50);
x=750;
hBrush=GetStockObject(DKGRAY_BRUSH);
SelectObject(hDC,hBrush);
Rectangle(hDC,x,50,x+50,100);
RoundRect(hDC,x,150,x+50,200,15,15);
Ellipse(hDC,x+75,50,x+125,100);
Chord(hDC,x+75,150,x+125,200,x+75,150,x+125,200);
Pie(hDC,x+150,50,x+200,100,x+150,50,x+200,50);
ReleaseDC(hWnd,hDC);
}
void Graph5(HWND hWnd)
{
LOGPEN lpBlack = {PS_SOLID,1,1,RGB(0,0,0)};
HBRUSH hBrush[4];
HPEN hBlackPen;
HDC hDC;
int x,y;
x=525; y=250;
hBlackPen = CreatePenIndirect(&lpBlack);
hBrush[0] = CreateHatchBrush(HS_HORIZONTAL,RGB(0,0,0));
hBrush[1] = CreateHatchBrush(HS_VERTICAL,RGB(255,0,0));
hBrush[2] = CreateHatchBrush(HS_FDIAGONAL,RGB(0,255,0));
hBrush[3] = CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255));
hDC = GetDC(hWnd);
SelectObject(hDC,hBlackPen);
SelectObject(hDC,hBrush[0]);
Rectangle(hDC,x+10,y+10,x+100,y+200);
SelectObject(hDC,hBrush[1]);
Rectangle(hDC,x+110,y+10,x+200,y+200);
SelectObject(hDC,hBrush[2]);
Rectangle(hDC,x+210,y+10,x+300,y+200);
SelectObject(hDC,hBrush[3]);
Rectangle(hDC,x+310,y+10,x+400,y+200);
ReleaseDC(hWnd,hDC);
}
void Graph6(HWND hWnd)
{
HDC hDC;
int i,x,y;
int nXChar,nYChar;
TEXTMETRIC tm;
char *textbuf[]={"Windows C 图像处理演示程序",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
"abcdefghijklmnopqrstuvwxyz",
"1234567890",
"Windows 图形编程"};
x=575; y=490;
hDC = GetDC(hWnd);
GetTextMetrics(hDC,&tm);
nXChar=tm.tmAveCharWidth;
nYChar=tm.tmHeight+tm.tmExternalLeading;
for (i=0;i<5;i++) {
TextOut(hDC,x+nXChar,y+nYChar*(1+i),textbuf[i],lstrlen(textbuf[i]));
}
ReleaseDC(hWnd,hDC);
}
void ClearA(HWND hWnd)
{
InvalidateRect(hWnd,NULL,FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -