想用mfc做一个绘图系统,画圆直线矩形填充颜色和平移

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想用mfc做一个绘图系统,画圆直线矩形填充颜色和平移相关的知识,希望对你有一定的参考价值。

1141106646 发这里,跪谢

参考技术A 不用跪,你的VC 是什么版本的?追问

6.0 大神你有咩?

追答

好,明天发

追问

嗯嗯,谢谢谢谢!上面那个是我扣扣号码哈!就发那里哈!

嗯嗯,谢谢谢谢!上面那个是我扣扣号码哈!就发那里哈!

还有就是,能直接给我发那个vc保存下的文件吗?单独的源代码我不会输入~~~~(>_<)~~~~ 还得麻烦大神早些发哈,,上面催得紧,泪~~~~

追答

程序初步完成,功能如下:

    鼠标实时交互完成 直线,圆,矩形绘制,拖动;图形可扩展

    修改图形属性;

    生成图元文件输出;

    文件的保存与读取;

    打印输出。


程序见附件,界面如下。


本回答被提问者采纳

opencv各种绘图 直线 矩形 圆 椭圆

画图函数

(1)直线cvLine函数

其结构

void cvLine(//画直线
  CvArr* array,//画布图像
  CvPoint pt1,//起始点
  CvPoint pt2,//终点
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int connectivity = 8//反走样
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvLine(src1,cvPoint(20,20),cvPoint(250,250),CV_RGB(255,0,0),8);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果

技术分享

(2)矩形cvRectangle函数

其结构

void cvRectangle(//画矩形
  CvArr* array,//画布图形
  CvPoint pt1,//起始点
  CvPoint pt2,//终点
  CvScalar color,//颜色
  int thickness = 1,//宽度
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvRectangle(src1,cvPoint(20,20),cvPoint(200,200),CV_RGB(0,255,0),8);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果

技术分享

(3)圆形cvCircle函数

其结构

void cvCircle(//画圆
  CvArr* array,//画布图像
  CvPoint cevter,//圆心
  int radius,//半径
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int connectivity = 8//反走样
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvCircle(src1,cvPoint(150,150),100,CV_RGB(0,0,255),5);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果

技术分享

(4)椭圆cvEllipse函数

其结构

void cvEllipse(//画椭圆
  CvArr* img,//画布图像
  CvPoint center,//中心点
  CvSize axes,//长短轴
  double angle,//偏离主轴角度
  double start_angle,//弧线開始位置
  double end_angle,//弧线结束位置
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int line_type = 8//
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvEllipse(src1,cvPoint(150,150),cvSize(150,50),45,0,360,CV_RGB(255,0,0),3);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果

技术分享

(5)多边形函数

1.cvFillPoly函数

其结构

void cvFillPoly(//画多个实心多边形
  CvArr* img,//画布图像
  CvPoint** pts,//点序列
  int* npt,//计数点数组
  int contours,//显示几个多边形
  CvScalar color,//颜色
  int line_type = 8
);
2.cvFillConvexPoly函数

其结构

void cvFillConvexPoly(//画一个实心多边形
  CvArr* img,//画布图像
  CvPoint* pts,//点序列
  int npt,//计数点数组
  CvScalar color,//颜色
  int line_type = 8
);
3.cvPolyLine函数
void cvFillPoly(//画多个空心多边形
  CvArr* img,//画布图像
  CvPoint** pts,//点序列
  int* npt,//计数点数组
  int contours,//显示几个多边形
  int is_closed,//是否从上个多边形尾点開始
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int line_type = 8
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1,*src2,*src3;
  src1 = cvLoadImage("7.jpg");
  src2 = cvLoadImage("8.jpg");
  src3 = cvLoadImage("9.jpg");

  int arr[3]= {4,4,4};   

  CvPoint ** pt =new CvPoint*[3];

  pt[0] = new CvPoint[4];  
  pt[0][0] = cvPoint(10,10);  
  pt[0][1] = cvPoint(210,10);  
  pt[0][2] = cvPoint(210,210);  
  pt[0][3] = cvPoint(10,210);  
  pt[1] = new CvPoint[4]; 
  pt[1][0] = cvPoint(10,310);  
  pt[1][1] = cvPoint(210,310);  
  pt[1][2] = cvPoint(210,510);  
  pt[1][3] = cvPoint(10,510);  
  pt[2] = new CvPoint[4]; 
  pt[2][0] = cvPoint(310,10);  
  pt[2][1] = cvPoint(410,10);  
  pt[2][2] = cvPoint(410,210);  
  pt[2][3] = cvPoint(310,210);  

  cvPolyLine(src1, pt, arr, 3, 1, CV_RGB(0,255,0),5);  

  cvFillPoly(src2, pt,arr,3,CV_RGB(250,0,0));  

  cvFillConvexPoly(src3,pt[0],4,CV_RGB(0,0,255));

  cvShowImage( "原图1", src1);
  cvShowImage( "原图2", src2);
  cvShowImage( "原图3", src3);
  cvWaitKey();
  return 0;
}
输出结果

技术分享

(6)绘制文字cvPutText函数

其结构

void cvPutText(//绘制文字
  CvArr* img,//画图图像
  const char* text,//文字内容
  CvPoint origin,//文字起始位置
  const CvFont* font,//文字字体设置
  CvScalar color//颜色
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1,*src2,*src3;
  src1 = cvLoadImage("10.jpg");

  char* str = "I am a student!";

  CvFont* cf = new CvFont();

  cvInitFont(cf,CV_FONT_HERSHEY_SIMPLEX,1.0,0.5);

  cvPutText(src1,str,cvPoint(50,100),cf,CV_RGB(255,0,0));

  cvShowImage( "原图1", src1);
  cvWaitKey();
  return 0;
}
输出结果

技术分享

to be continued 







以上是关于想用mfc做一个绘图系统,画圆直线矩形填充颜色和平移的主要内容,如果未能解决你的问题,请参考以下文章

怎么用word制作树状图

MFC编程ellipse()怎么画圆

opencv各种绘图 直线 矩形 圆 椭圆

MFC绘图小实验

鼠标绘图的原理

UIView 填充颜色