如何在VC里面用C语言绘制图形,直线,圆等等。另外头文件<graphics.h>在VC下不能使用,为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在VC里面用C语言绘制图形,直线,圆等等。另外头文件<graphics.h>在VC下不能使用,为啥?相关的知识,希望对你有一定的参考价值。

<graphics.h>是TC下使用的库

建立MFC文件,添加菜单“功能性按键”时选择“CVIEW”
函数内容如下(我用的Visual studio 2010,可能有些版本不同导致操作不同)
CDC*pDC=GetDC();//得到绘图类指针
RedrawWindow();//重建窗口
pDC->Rectangle(50,20,700,400);//以默认画笔画一矩形

CPen bluepen(PS_DASH,1,RGB(0,0,255));//创建画虚线,线宽为1的蓝色画笔
CPen*old=pDC->SelectObject(&bluepen);
pDC->Ellipse(100,50,250,200);//画圆

CPen redpen(PS_SOLID,2,RGB(255,0,0));//创建画实线,线宽为2的红色画笔
pDC->SelectObject(&redpen);
pDC->Ellipse(500,50,650,200);//画圆

pDC->MoveTo(375,100);//画一三角形
pDC->LineTo(225,300);
pDC->LineTo(525,300);
pDC->LineTo(375,100);

CBrush greenBrush(RGB(0,255,0));//创建纯色的绿色画笔刷
pDC->SelectObject(&greenBrush);
pDC->FloodFill(375,200,RGB(255,0,0));//以纯色绿笔刷填充三角形

CBrush green1Brush(HS_FDIAGONAL,RGB(0,255,0));//创建影线为斜线的绿色笔刷
pDC->SelectObject(&green1Brush);
pDC->FloodFill(600,150,RGB(255,0,0));//以绿色斜线笔刷填充圆

pDC->SelectObject(old);//释放创建的画笔,回复原来的画笔

pDC->TextOut(335,250,"HELLO WORLD,It's my first computer graphic work!");//输出字符

ReleaseDC(pDC);//释放创建的CDC对象
参考技术A 为啥不用VC的文档视图结构?视类里可以用 封装好的CDC类画图啊,画什么图形都可以,提供CDC 的指针了啊,比如
pDC->Line(......)//画直线
pDC->Arc(....)//画圆弧
...
好多.....
参考技术B 额…用VC这么长时间了,还没用过圆之类的哈!不过你要真想用,我觉得可以先在WORD里面把想要的图形画好,然后复制过来应该就可以了吧!仅供参考哈! 参考技术C o c里面有这个头文件。
另外,团IDC网上有许多产品团购,便宜有口碑
参考技术D graphics.h 是 tc 下的,vc 下你安装了 easyx 也就有了,然后画圆这样:
#include <graphics.h> // 引用图形库
#include <conio.h>
void main()

initgraph(640, 480); // 初始化图形窗口
circle(100, 100, 60); // 画圆,圆心(100, 100),半径 60
getch(); // 按任意键继续
closegraph(); // 关闭图形界面
本回答被提问者采纳

OpenCV探索之路(十四):绘制点直线几何图形

绘制点和圆

void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color,
               int thickness=1, int line_type=8, int shift=0 );
  • img:图像。
  • center:圆心坐标。
  • radius:圆形的半径。
  • color:线条的颜色。
  • thickness:如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充。
  • line_type:线条的类型。见 cvLine 的描述
  • shift:圆心坐标点和半径值的小数点位数。

画圆画点都是使用circle()函数来画,点就是圆,我们平常所说的圆只不过是半径大一点而已。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

//画圆画点都是使用circle()函数来画,点就是圆,我们平常所说的圆只不过是半径大一点而已。
int main()
{
    Mat img = imread("lol16.jpg");  

    //画空心点
    Point p(20, 20);//初始化点坐标为(20,20)
    circle(img, p, 2, Scalar(0, 255, 0)); //第三个参数表示点的半径,第四个参数选择颜色。这样子我们就画出了绿色的空心点

    //这种初始化点的方式也可以
    Point p2;
    p2.x = 100;
    p2.y = 100;
    //画实心点
    circle(img, p2, 3,Scalar(255,0,0),-1); //第五个参数我设为-1,表明这是个实点。

    //画空心圆
    Point p3(300, 300);
    circle(img,p3,100,Scalar(0,0,255),3);//第五个参数我们调高点,让线更粗

    //画实心圆
    Point p4;
    p4.x = 600;
    p4.y = 600;
    circle(img, p4, 100, Scalar(120, 120, 120), - 1);

    imshow("画点画圆", img);

    waitKey();
    return 0;
}

绘制椭圆

void ellipse(Mat& img, Point center,Size axes, double angle, double startAngle, double endAngle, const Scalar& color,int thickness=1, int lineType=8, int shift=0)
  • img:图像。
  • center:椭圆圆心坐标。
  • axes:轴的长度。
  • angle:偏转的角度。
  • start_angle:圆弧起始角的角度。
  • end_angle:圆弧终结角的角度。
  • color:线条的颜色。
  • thickness:线条的粗细程度。
  • line_type:线条的类型,见CVLINE的描述。
  • shift:圆心坐标点和数轴的精度。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main()
{
    Mat img = imread("lol16.jpg");  
    int thickness = 3;
    int lineType = 8;
    double angle = 30;  //椭圆旋转角度
    //第三个参数Size中的两个参数分别是横轴长、纵轴长。
    //同理,thickness若是小于0,表示实心
    ellipse(img,Point(100, 100),Size(90, 60),angle,0,360,Scalar(255, 255, 0),thickness,lineType);

    imshow("画椭圆", img);

    waitKey();
    return 0;
}

绘制矩形

 void rectangle(Mat& img,Rect rec, const Scalar&color, intthickness=1, intlineType=8,intshift=0 )
  • img:图像。
  • rec:表征矩形的位置和长宽。
  • color:线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。
  • thickness:组成矩形的线条的粗细程度。取负值时(如CV_FILLED)函数绘制填充了色彩的矩形。
  • line_type:线条的类型。见cvLine的描述
  • shift:坐标点的小数点位数。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main()
{
    Mat img = imread("lol16.jpg");  
    Rect r(250, 250, 120, 200);
    rectangle(img, r, Scalar(0, 255, 255), 3);

    imshow("画矩形", img);

    waitKey();
    return 0;
}

绘制直线

void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,
                     int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:图像.
  • pt1:线条起点.
  • pt2:线条终点.
  • color:线条颜色.
  • thickness:线条宽度.
  • lineType:线型
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main()
{
    Mat img = imread("lol16.jpg");  
    Point p1(100, 100);
    Point p2(758, 50);
    line(img, p1, p2, Scalar(33, 33, 133), 2);

    //画第二条线
    line(img, Point(300, 300), Point(758, 300), Scalar(89, 90, 90), 3);

    imshow("画矩形", img);

    waitKey();
    return 0;
}

最后来个综合的图形展示。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main()
{
    Mat img = Mat::zeros(Size(800,600), CV_8UC3);
    img.setTo(255);
    Point p1(100, 100);
    Point p2(758, 50);
    line(img, p1, p2, Scalar(0, 0, 255), 2);
    line(img, Point(300, 300), Point(758, 400), Scalar(0, 255, 255), 3);

    Point p(20, 20);//初始化点坐标为(20,20)
    circle(img, p, 2, Scalar(0, 255, 0),-1);

    Point p4;
    p4.x = 600;
    p4.y = 600;
    circle(img, p4, 100, Scalar(120, 120, 120), -1);

    int thickness = 3;
    int lineType = 8;
    double angle = 30;  //椭圆旋转角度
    ellipse(img, Point(100, 100), Size(90, 60), angle, 0, 360, Scalar(255, 255, 0), thickness, lineType);


    Rect r(250, 250, 120, 200);
    rectangle(img, r, Scalar(0, 255, 255), 3);
    imshow("大杂烩", img);

    waitKey();
    return 0;
}

以上是关于如何在VC里面用C语言绘制图形,直线,圆等等。另外头文件<graphics.h>在VC下不能使用,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

Quartz 2D

IOS用CGContextRef画各种图形(文字圆直线弧线矩形扇形椭圆三角形圆角矩形贝塞尔曲线图片)(转)

Canvas入门:绘制矩形圆直线曲线等基本图形

"graphics.h"在C里有啥作用?

使用graphics.h来绘制图形

CAD新手必练图形