⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph.c

📁 matlab 例程
💻 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 + -