VC.NET MFC GDI+ 画线
最近做一个项目 需要 使用GDI+ 的 DrawLines 画线
MSDN 上给出的实例:
public:
void DrawLinesPoint( PaintEventArgs^ e )
{
// Create pen.
Pen^ pen = gcnew Pen( Color::Black,3.0f );
// Create array of points that define lines to draw.
array<Point>^ points = {Point(10,10),Point(10,100),Point(200,50),Point(250,300)};
//Draw lines to screen.
e->Graphics->DrawLines( pen, points );
}
但是如何动态的添加 Point 数组呢。
这里使用 STL 中的 vector 来存储点,代码如下:
#include <vector>
using namespace std;
{
PointF * posF = new PointF(pos.x,pos.y);
posVec.push_back(posF);
}
void CXXX::Draw( Graphics& Gr,CRect rect )
{
Pen m_Pen(Color::Red,2.0f);
if (posVec.size() > 1)
{
int number = posVec.size();
PointF* points = new PointF[number];
int i = 0;
std::vector<PointF*>::iterator ipos = posVec.begin();
for( ; ipos != posVec.end(); ipos++ )
{
points[i].X = (*ipos)->X;
points[i].Y= (*ipos)->Y;
i++;
}
// Draw lines to screen.
Gr.DrawLines(&m_Pen, points, number);
delete[] points;
}
}
最近做一个项目 需要 使用GDI+ 的 DrawLines 画线
MSDN 上给出的实例:
public:
void DrawLinesPoint( PaintEventArgs^ e )
{
// Create pen.
Pen^ pen = gcnew Pen( Color::Black,3.0f );
// Create array of points that define lines to draw.
array<Point>^ points = {Point(10,10),Point(10,100),Point(200,50),Point(250,300)};
//Draw lines to screen.
e->Graphics->DrawLines( pen, points );
}
但是如何动态的添加 Point 数组呢。
这里使用 STL 中的 vector 来存储点,代码如下:
#include <vector>
using namespace std;
vector<PointF*> posVec;
{
PointF * posF = new PointF(pos.x,pos.y);
posVec.push_back(posF);
}
void CXXX::Draw( Graphics& Gr,CRect rect )
{
Pen m_Pen(Color::Red,2.0f);
if (posVec.size() > 1)
{
int number = posVec.size();
PointF* points = new PointF[number];
int i = 0;
std::vector<PointF*>::iterator ipos = posVec.begin();
for( ; ipos != posVec.end(); ipos++ )
{
points[i].X = (*ipos)->X;
points[i].Y= (*ipos)->Y;
i++;
}
// Draw lines to screen.
Gr.DrawLines(&m_Pen, points, number);
delete[] points;
}
}