首页 > 编程语言 >C++ Builder 2010 绘制坐标

C++ Builder 2010 绘制坐标

时间:2024-06-04 14:30:21浏览次数:31  
标签:Canvas LineTo Builder pos C++ fm1 MoveTo Image1 2010

 一、 步骤:1.先确定Image的位置,大小(可以不写)
                    2.设置初始面板,绘制初始的x,y坐标轴
                    3.画x,y向的刻度线,标刻x,y轴刻度
                    4.获取数据 (可以不写)
                    5.将数据标刻在Image上 (可以不写)

二、所使用的函数解析

1. FillRect:填充矩形(FillRect 方法的作用是在画布上填充已绘制的矩形)
2. 使用语法:"FillRect (x,y,width,height);", 其中x、y分别表示矩形左上角的x坐标、y坐标
3. rect:矩形
4. Moveto:移动到某个坐标。   moveto(x,y)
5. Lineto:从当前坐标, 移动的某个坐标连接到当前坐标。 lineto(x,y)
    这两个函数加起来就是画一条直线: Moveto(x,y)和Lineto(x,y)
6. TextOut:函数使用当前选定的字体、背景色和文本颜色在指定位置写入一个字符串。
                    TextOutA(x,y,text);

三、具体操作流程

1.打开C++ Builder 2010软件,File -> New -> VCL Forms Application - C++Builder 。创建界面。

2.修改name中的 Form1 成 fm1 方便后续操作。

3. 添加 Image 组件。在组件栏(Tool Palette)搜 Image 并拖到主界面中。

4. 切换到代码界面。按 F12 或 双击主界面 或 点击主页面下方的 Unit1.cpp(这里我采用双击主界面)

 5.编写代码。

(1)确定Image的位置,大小(可以不写)

fm1->Image1 ->Top =30;fm1->Image1 ->Left =30;        //Image定位
fm1->Image1 ->Width =1000;fm1->Image1 ->Height =400; //Image大小限定

(2) 设置初始面板,绘制初始的x,y坐标轴

fm1->Image1->Canvas->Pen->Color = clWhite;     //Canvas:画布   Pen:刷子  设置颜色
fm1->Image1->Canvas->Brush->Color = clBlack;   //Brush:刷子  设置颜色

fm1->Image1->Canvas->FillRect(Rect(0,0, fm1->Image1->Width,fm1->Image1->Height)); //初始面板
fm1->Image1->Canvas->MoveTo(50,350); fm1->Image1->Canvas->LineTo(fm1->Image1->Width,350);      //初始x轴绘制
fm1->Image1->Canvas->MoveTo(80,380); fm1->Image1->Canvas->LineTo(80,20);   //初始y轴绘制

fm1->Image1->Canvas->MoveTo(fm1->Image1->Width*0.98,345); fm1->Image1->Canvas->LineTo(fm1->Image1->Width,350);      //x轴箭头绘制
fm1->Image1->Canvas->LineTo(fm1->Image1->Width,350); fm1->Image1->Canvas->LineTo(fm1->Image1->Width*0.98,355);

fm1->Image1->Canvas->MoveTo(75,40); fm1->Image1->Canvas->LineTo(80,20);                                             //y轴箭头绘制
fm1->Image1->Canvas->MoveTo(80,20); fm1->Image1->Canvas->LineTo(85,40);

(3)画x,y向的刻度线,标刻x,y轴刻度

// 画刻度线与刻度
// 纵向线:
	fm1->Image1->Canvas->Pen->Color = clTeal;
	pos=920;
	for(i=0;i<20;i++)
	{
	  pos -= 40;
	  fm1->Image1->Canvas->MoveTo(pos,350); fm1->Image1->Canvas->LineTo(pos,50);
	}
// 横向线:
	fm1->Image1->Canvas->Pen->Color = clTeal;
	pos = 35;
	for(i=0;i<20;i++)
	{
	  pos += 15;
	  fm1->Image1->Canvas->MoveTo(80,pos); fm1->Image1->Canvas->LineTo(fm1->Image1->Width*0.98,pos);
	}
// x轴刻度
	fm1->Image1->Canvas->Font->Color = clWhite;
	fm1->Image1->Canvas->Font->Name = "Arial";
	fm1->Image1->Canvas->Font->Size = 9;
	fm1->Image1->Canvas->Pen->Color = clWhite;
	pos = 80;
	for(i=0;i<20;i++)
	{
	  AnsiString number_x;
	  number_x=String((i+1)*10.0)+".0";
	  pos += 40;
	  fm1->Image1->Canvas->MoveTo(pos,350); fm1->Image1->Canvas->LineTo(pos,355);
	  fm1->Image1->Canvas->TextOutA(pos-14,360,number_x);
	}
// y轴刻度
	fm1->Image1->Canvas->Font->Color = clWhite;
	fm1->Image1->Canvas->Font->Name = "Arial";
	fm1->Image1->Canvas->Font->Size = 9;
	fm1->Image1->Canvas->Pen->Color = clWhite;
	pos = 35;
	for(i=0;i<20;i++)
	{
	  AnsiString number_x,number_y;
	  number_x=String((i+1)*10.0)+".0";
	  number_y=String((i+1)*10.0)+".0";
	  pos += 15;
	  fm1->Image1->Canvas->MoveTo(75,pos); fm1->Image1->Canvas->LineTo(80,pos);
	  fm1->Image1->Canvas->TextOutA(40,343-(i+1)*15,number_y);
	}
	fm1->Image1->Canvas->TextOutA(20,343-0*15,"0.0    ");

6.完整代码。上述第5点是代码解析,复制第6点可以直接生成代码。

int pos,i;
void __fastcall Tfm1::FormCreate(TObject *Sender)
{
/*
  FillRect:填充矩形
  fillRect 方法的作用是在画布上绘制已填充的矩形
  使用语法:"fillRect (x,y,width,height):", 其中x、y分别表示矩形左上角的x坐标、y坐标
  rect:矩形
  moveto:移动到某个坐标   moveto(x,y)
  lineto:从当前坐标, 移动的某个坐标连接到当前坐标。 lineto(x,y)
  这两个函数加起来就是画一条直线:moveto(x,y)和lineto(x,y)
  TextOut:函数使用当前选定的字体、背景色和文本颜色在指定位置写入一个字符串。
		   TextOutA(x,y,text);
*/
/*
  步骤:1.先确定Image的位置,大小(可以不写)
		2.设置初始面板,绘制初始的x,y坐标轴
		3.画x,y向的刻度线,标刻x,y轴刻度
		4.获取数据 (可以不写)
		5.将数据标刻在Image上 (可以不写)
*/
// 定位、大小(可以不写)
	fm1->Image1 ->Top =30;fm1->Image1 ->Left =30;
	fm1->Image1 ->Width =1000;fm1->Image1 ->Height =400;

// 设置
	fm1->Image1->Canvas->Pen->Color = clWhite;                                  //Canvas:画布   brush:刷子
	fm1->Image1->Canvas->Brush->Color = clBlack;

	fm1->Image1->Canvas->FillRect(Rect(0,0, fm1->Image1->Width,fm1->Image1->Height));              //初始面板
	fm1->Image1->Canvas->MoveTo(50,350); fm1->Image1->Canvas->LineTo(fm1->Image1->Width,350);      //初始x轴绘制
	fm1->Image1->Canvas->MoveTo(80,380); fm1->Image1->Canvas->LineTo(80,20);                       //初始y轴绘制

	fm1->Image1->Canvas->MoveTo(fm1->Image1->Width*0.98,345); fm1->Image1->Canvas->LineTo(fm1->Image1->Width,350);      //x轴箭头绘制
	fm1->Image1->Canvas->LineTo(fm1->Image1->Width,350); fm1->Image1->Canvas->LineTo(fm1->Image1->Width*0.98,355);
	fm1->Image1->Canvas->MoveTo(75,40); fm1->Image1->Canvas->LineTo(80,20);                                             //y轴箭头绘制
	fm1->Image1->Canvas->MoveTo(80,20); fm1->Image1->Canvas->LineTo(85,40);

// 画刻度线与刻度
// 纵向线:
	fm1->Image1->Canvas->Pen->Color = clTeal;
	pos=920;
	for(i=0;i<20;i++)
	{
	  pos -= 40;
	  fm1->Image1->Canvas->MoveTo(pos,350); fm1->Image1->Canvas->LineTo(pos,50);
	}
// 横向线:
	fm1->Image1->Canvas->Pen->Color = clTeal;
	pos = 35;
	for(i=0;i<20;i++)
	{
	  pos += 15;
	  fm1->Image1->Canvas->MoveTo(80,pos); fm1->Image1->Canvas->LineTo(fm1->Image1->Width*0.98,pos);
	}
// x轴刻度
	fm1->Image1->Canvas->Font->Color = clWhite;
	fm1->Image1->Canvas->Font->Name = "Arial";
	fm1->Image1->Canvas->Font->Size = 9;
	fm1->Image1->Canvas->Pen->Color = clWhite;
	pos = 80;
	for(i=0;i<20;i++)
	{
	  AnsiString number_x;
	  number_x=String((i+1)*10.0)+".0";
	  pos += 40;
	  fm1->Image1->Canvas->MoveTo(pos,350); fm1->Image1->Canvas->LineTo(pos,355);
	  fm1->Image1->Canvas->TextOutA(pos-14,360,number_x);
	}
// y轴刻度
	fm1->Image1->Canvas->Font->Color = clWhite;
	fm1->Image1->Canvas->Font->Name = "Arial";
	fm1->Image1->Canvas->Font->Size = 9;
	fm1->Image1->Canvas->Pen->Color = clWhite;
	pos = 35;
	for(i=0;i<20;i++)
	{
	  AnsiString number_x,number_y;
	  number_x=String((i+1)*10.0)+".0";
	  number_y=String((i+1)*10.0)+".0";
	  pos += 15;
	  fm1->Image1->Canvas->MoveTo(75,pos); fm1->Image1->Canvas->LineTo(80,pos);
	  fm1->Image1->Canvas->TextOutA(40,343-(i+1)*15,number_y);
	}
	fm1->Image1->Canvas->TextOutA(20,343-0*15,"0.0    ");
}

7.编译代码并运行。按 F9键 或 Run

8.得到结果。

 9.源码链接。可直接在桌面运行

C++Builder2010绘制坐标资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/God_me_1/89397348

标签:Canvas,LineTo,Builder,pos,C++,fm1,MoveTo,Image1,2010
From: https://blog.csdn.net/God_me_1/article/details/139437220

相关文章

  • 如何选择实名认证接口?C++身份证二、三要素实名认证接口提供厂商
    线上平台进行身份证实名认证,有助于保障交易的安全性,防止身份信息被盗用的风险,其主要应用于金融、在线银行、支付平台、社交媒体、账号注册、内容发布等多种应用场景。那么,又当如何选择实名认证接口厂家呢?翔云人工智能开放平台专注于API接口的提供,为有需要的企业提供了便......
  • C++发票查验真假的接口厂家有哪些?数电票、医疗票据查验
    现如今,随着数字化应用的不断普及,财务工作也在不断的由人工向数字化转型。企业财务进行数字化转型,能够推动财务管理职能的转型升级,通过运用云计算、大数据等技术,重构财务组合和业务流程,实现业财融合,提升会计信息质量、工作效率、合规程度及价值创造能力。翔云人工智能开放......
  • C++发票查验真假的接口厂家有哪些?数电票、医疗票据查验
    现如今,随着数字化应用的不断普及,财务工作也在不断的由人工向数字化转型。企业财务进行数字化转型,能够推动财务管理职能的转型升级,通过运用云计算、大数据等技术,重构财务组合和业务流程,实现业财融合,提升会计信息质量、工作效率、合规程度及价值创造能力。翔云人工智能开放平......
  • C++访问限定符private、public、protected的使用场景
    众所周知,C++中有3种访问符,分别是private、public、protected。其中private和public比较好理解。private:只能由该类中的函数、其友元函数访问,不能被任何其他访问,更不能由该类的对象在类外进行访问,类成员变量一般修饰为private,防止类使用者不受约束地直接修改数据。public:......
  • C++派生类与继承性
    继承和派生其实都是一回事,只是说法不同罢了。        如:子类继承了父类,父类派生了子类。那么什么是继承呢 首先,如上图所示是一个动物种类区分图。猫和狗都属于动物这一种类,而猫又可以细分为加菲猫、布偶猫等种类。我们发现这些细分出来的单体在拥有上一级别的共性......
  • 【第二节】C/C++数据结构之线性表
    目录一、线性表基本说明1.1基本概念1.2抽象数据类型1.3存储结构1.4插入与删除的区别1.5顺序存储和链式存储的优缺点二、链表2.1基本概念2.2抽象数据类型2.3单链表的定义2.4单链表的基本操作2.5单链表模板形式的类定义与实现三、单向循环链表四、双链表......
  • visual studio 2019 c++与汇编混合代码
    1、visualstudio2019下x64架构的CPU配置不支持内联汇编代码的嵌入,即不支持__asm{}语句。2、通过创建.asm汇编代码文件封装汇编函数的方式实现c++代码调用汇编函数:第一步:修改工程的生成依赖项第二步:创建.asm汇编代码文件第三步:编写汇编代码的函数第四步:在c++文件调用汇编函......
  • c++ 异常处理
     =================================【C++11】std::runtime_error的使用一、概要std::runtime_error:运行时错误异常类,只有在运行时才能检测到的错误,继承于std::exception,它的声明在头文件中。std::runtime_error也用作几个运行时错误异常的基类,包括std::range_error(生成的......
  • C/C++结构体对齐测试
    #include<stddef.h>#include<iostream>structs1{inta;intb;};#pragmapack(8)structs2{charc;inta;doubleb;};structs3{charb[10];doublea;};#pragmaunpackstructs4{c......
  • 小猴编程周赛C++ | 字符串
    学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!附上汇总贴:小猴编程C++|汇总-CSDN博客【题目描述】小猴最近学习了字符串,为了加强对字符串的理解,猴博士特意给小猴安排了一道编程题:给定一个字符串s,保证s中只包含大写字母(AZ......