C++如何画图啊
能简单给几个命令吗?比方BASIC里的BOXCIRCLEPOINT谢谢!!!是TC啊我初学者...
能简单给几个命令吗?
比方BASIC里的BOX CIRCLE POINT
谢谢!!!
是TC啊 我初学者 展开
比方BASIC里的BOX CIRCLE POINT
谢谢!!!
是TC啊 我初学者 展开
8个回答
展开全部
可以啊!首先要用#include"graphics.h"这个库函数,然后你需要按如下步骤来写
#include"graphics.h"
main()
{ int gdrive=DETECT,gmode;/*定义两个参数:图形驱动和图形模式*/
initgraph(&gdrive,&gmode,"");/*初始化图形模式,第三个参数填的是路径*/
registerbgidriver(EGAVGA_driver);/*这个是用来注册图形模式来建立独立图形运行程序*/
bar(x1,y1,x2,y2);/*画矩形*/
circle(x1,y1,r);/*画圆*/
getch();
closegraph();/*关闭图形模式*/
}
如果需要其他的函数的话,
画点函数
void far putpixel(int x, int y, int color);
关于点的另外一个函数是:
int far getpixel(int x, int y);
它获得当前点(x, y)的颜色值。
有关坐标位置的函数
int far getmaxx(void);
返回x轴的最大值。
int far getmaxy(void);
返回y轴的最大值。
int far getx(void);
返回游标在x轴的位置。
void far gety(void);
返回游标有y轴的位置。
void far moveto(int x, int y);
移动游标到(x, y)点, 不是画点, 在移动过程中亦画点。
void far moverel(int dx, int dy);
移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置, 移动过程中不画点。
void far line(int x0, int y0, int x1, int y1);
画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y);
画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy);
画一条从现行游标(x, y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius);
以(x, y)为圆心, radius为半径, 画一个圆。
void far arc(int x, int y, int stangle, int endangle, int radius);
以(x, y)为圆心, radius为半径, 从stangle开始到endangle结束(用度表示)
画一段圆弧线。在TURBO C中规定x轴正向为0度, 逆时针方向旋转一周, 依次为
90, 180, 270和360度(其它有关函数也按此规定, 不再重述)。
void ellipse(int x, int y, int stangle, int endangle, int xradius,
int yradius);
以(x, y)为中心, xradius, yradius为x轴和y轴半径, 从角stangle 开始到
endangle结束画一段椭圆线, 当stangle=0, endangle=360时, 画出一个完整的
椭圆。
void far rectangle(int x1, int y1, int x2, inty2);
以(x1, y1)为左上角, (x2, y2)为右下角画一个矩形框。
void far drawpoly(int numpoints, int far *polypoints);
画一个顶点数为numpoints, 各顶点坐标由polypoints 给出的多边形。
polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,
y, 并且x在前。值得注意的是当画一个封闭的多边形时, numpoints 的值取实际
多边形的顶点数加一, 并且数组polypoints中第一个和最后一个点的坐标相同。
void far bar(int x1, int y1, int x2, int y2);
确定一个以(x1, y1)为左上角, (x2, y2)为右下角的矩形窗口, 再按规定图
模和颜色填充。
说明: 此函数不画出边框, 所以填充色为边框。
void far bar3d(int x1, int y1, int x2, int y2, int depth, int
topflag);
当topflag为非0时, 画出一个三维的长方体。当topflag为0时, 三维图形不
封顶, 实际上很少这样使用。
说明: bar3d()函数中, 长方体第三维的方向不随任何参数而变, 即始终为
45度的方向。
void far pieslice(int x, int y, int stangle, int endangle, int
radius);
画一个以(x, y)为圆心, radius为半径, stangle为起始角度, endangle 为
终止角度的扇形, 再按规定方式填充。当stangle=0, endangle=360 时变成一个
实心圆, 并在圆内从圆点沿X轴正向画一条半径。
void far sector(int x, int y, int stanle, intendangle, int
xradius, int yradius);
画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径, stangle
为起始角, endangle为终止角的椭圆扇形, 再按规定方式填充。
清屏函数 cleardevice();用这些应该足够了吧!
#include"graphics.h"
main()
{ int gdrive=DETECT,gmode;/*定义两个参数:图形驱动和图形模式*/
initgraph(&gdrive,&gmode,"");/*初始化图形模式,第三个参数填的是路径*/
registerbgidriver(EGAVGA_driver);/*这个是用来注册图形模式来建立独立图形运行程序*/
bar(x1,y1,x2,y2);/*画矩形*/
circle(x1,y1,r);/*画圆*/
getch();
closegraph();/*关闭图形模式*/
}
如果需要其他的函数的话,
画点函数
void far putpixel(int x, int y, int color);
关于点的另外一个函数是:
int far getpixel(int x, int y);
它获得当前点(x, y)的颜色值。
有关坐标位置的函数
int far getmaxx(void);
返回x轴的最大值。
int far getmaxy(void);
返回y轴的最大值。
int far getx(void);
返回游标在x轴的位置。
void far gety(void);
返回游标有y轴的位置。
void far moveto(int x, int y);
移动游标到(x, y)点, 不是画点, 在移动过程中亦画点。
void far moverel(int dx, int dy);
移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置, 移动过程中不画点。
void far line(int x0, int y0, int x1, int y1);
画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y);
画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy);
画一条从现行游标(x, y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius);
以(x, y)为圆心, radius为半径, 画一个圆。
void far arc(int x, int y, int stangle, int endangle, int radius);
以(x, y)为圆心, radius为半径, 从stangle开始到endangle结束(用度表示)
画一段圆弧线。在TURBO C中规定x轴正向为0度, 逆时针方向旋转一周, 依次为
90, 180, 270和360度(其它有关函数也按此规定, 不再重述)。
void ellipse(int x, int y, int stangle, int endangle, int xradius,
int yradius);
以(x, y)为中心, xradius, yradius为x轴和y轴半径, 从角stangle 开始到
endangle结束画一段椭圆线, 当stangle=0, endangle=360时, 画出一个完整的
椭圆。
void far rectangle(int x1, int y1, int x2, inty2);
以(x1, y1)为左上角, (x2, y2)为右下角画一个矩形框。
void far drawpoly(int numpoints, int far *polypoints);
画一个顶点数为numpoints, 各顶点坐标由polypoints 给出的多边形。
polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,
y, 并且x在前。值得注意的是当画一个封闭的多边形时, numpoints 的值取实际
多边形的顶点数加一, 并且数组polypoints中第一个和最后一个点的坐标相同。
void far bar(int x1, int y1, int x2, int y2);
确定一个以(x1, y1)为左上角, (x2, y2)为右下角的矩形窗口, 再按规定图
模和颜色填充。
说明: 此函数不画出边框, 所以填充色为边框。
void far bar3d(int x1, int y1, int x2, int y2, int depth, int
topflag);
当topflag为非0时, 画出一个三维的长方体。当topflag为0时, 三维图形不
封顶, 实际上很少这样使用。
说明: bar3d()函数中, 长方体第三维的方向不随任何参数而变, 即始终为
45度的方向。
void far pieslice(int x, int y, int stangle, int endangle, int
radius);
画一个以(x, y)为圆心, radius为半径, stangle为起始角度, endangle 为
终止角度的扇形, 再按规定方式填充。当stangle=0, endangle=360 时变成一个
实心圆, 并在圆内从圆点沿X轴正向画一条半径。
void far sector(int x, int y, int stanle, intendangle, int
xradius, int yradius);
画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径, stangle
为起始角, endangle为终止角的椭圆扇形, 再按规定方式填充。
清屏函数 cleardevice();用这些应该足够了吧!
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
2016-01-04 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
// DrawView.cpp : implementation of the CDrawView class
//
#include "stdafx.h"
#include "Draw.h"
#include "DrawDoc.h"
#include "DrawView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDrawView
IMPLEMENT_DYNCREATE(CDrawView, CView)
BEGIN_MESSAGE_MAP(CDrawView, CView)
//{{AFX_MSG_MAP(CDrawView)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDrawView construction/destruction
CDrawView::CDrawView()
{
// TODO: add construction code here
m_ptOrigin=0;
}
CDrawView::~CDrawView()
{
}
BOOL CDrawView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CDrawView drawing
void CDrawView::OnDraw(CDC* pDC)
{
CDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CDrawView printing
BOOL CDrawView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CDrawView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CDrawView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CDrawView diagnostics
#ifdef _DEBUG
void CDrawView::AssertValid() const
{
CView::AssertValid();
}
void CDrawView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CDrawDoc* CDrawView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDrawDoc)));
return (CDrawDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDrawView message handlers
//DEL void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
//DEL {
//DEL // TODO: Add your message handler code here and/or call default
//DEL MessageBox("view clicked");
//DEL CView::OnLButtonDown(nFlags, point);
//DEL }
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// MessageBox("view clicked");
m_ptOrigin=point;
CView::OnLButtonDown(nFlags, point);
}
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
/* 画图 */
/*
HDC hdc;
hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);
*/
/*
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
*/
//CClientDC dc(this);
/*CClientDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
// CWindowDC dc(GetParent());
/*
CWindowDC dc(GetDesktopWindow());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
/*颜色线条*/
/*
CPen pen(PS_DASH,1,RGB(255,0,0));
CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
CBrush brush(RGB(255,0,0));
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
CView::OnLButtonUp(nFlags, point);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、在windows系统上做图3种方法,1:Directx ;2:调用系统API;3:openGL
2、下面是,调用系统API 显示一张图的方法
HBITMAP bit;//设备相关位图[2章]
intw,h;//图形尺寸[2章]
void loadbmp(CString cc)//调BMP图片[2章]
{
DeleteObject(bit);//删除上次的位图内存。
bit=(HBITMAP)LoadImage//调入cc指定的图形
(
AfxGetInstanceHandle(),//
cc,//文件名
IMAGE_BITMAP,//位图方式
0,//图形宽
0,//图形高
LR_LOADFROMFILE|LR_CREATEDIBSECTION//方式
);
if(bit==NULL){AfxMessageBox(cc+":没找到!!!");return;}//调图失败
DIBSECTION ds;//
BITMAPINFOHEADER &bm = ds.dsBmih;//
GetObject(bit,sizeof(ds),&ds);//取位图的信息->bminfo
w = bm.biWidth;//得到位图宽度值
h = bm.biHeight;//得到位图高度值
}
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
CString getml(CString mz)
{
charappdir[256];//当前目录[3章]
GetCurrentDirectory(256,appdir);//取当前目录
CString dir;//定义路径变量[2章]
dir=appdir;//转成CString类型
dir=dir+_T("\\图片\\")+mz+_T(".bmp");
//AfxMessageBox(dir);
return dir;
}
CClientDC dc(this);//取的当前显示句柄// dc.m_hDc ==当前显示区的设备场景
HDC hdc=CreateCompatibleDC(dc.m_hDC); //创建一个暂存设备场景
loadbmp(getml("1"));//读图到bit
SelectObject(hdc,bit);//设备与位图关联
BitBlt(dc.m_hDC,0,0,w,h,hdc,0,0,SRCCOPY);//把hdc2图显示到屏幕
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
initgraph以后用line,clircle,rectangle等画图
tc安装全了时,里面有一个例子:bgidemo.c你可以
编译运行,照这这个例子学习吧。
tc安装全了时,里面有一个例子:bgidemo.c你可以
编译运行,照这这个例子学习吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
亲爱的朋友:
看你用什么编程了,我用的是Visual C++6.0
直接找个JPG的图象拉到你的编译器里,
如果你想知道JPG共性数据的话可以去附件画图
画两副查不多的图象,比较一下数据
看你用什么编程了,我用的是Visual C++6.0
直接找个JPG的图象拉到你的编译器里,
如果你想知道JPG共性数据的话可以去附件画图
画两副查不多的图象,比较一下数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |