Win10系列:VC++绘制几何图形4

时间:2022-12-18 07:50:50

三角形绘制完成以后,接下来介绍如何给项目添加主入口函数。打开D2DBasicAnimation.h头文件,添加如下的代码定义一个DirectXAppSource类。

//定义类DirectXAppSource,实现IFrameworkViewSource接口

ref class DirectXAppSource : Windows::ApplicationModel::Core::IFrameworkViewSource

{

public:

    //实现IFrameworkViewSource接口中的方法

    virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView();

};

在上面的代码中,DirectXAppSource类实现IFrameworkViewSource接口。在IFrameworkViewSource接口中声明了一个CreateView函数,为了实现此函数,首先需要在DirectXAppSource类中对这个函数进行声明。

定义了DirectXAppSource类以后,接下来在D2DBasicAnimation.cpp源文件中添加CreateView函数的实现代码,此函数返回一个D2DBasicAnimation类的对象。代码如下所示:

//创建D2DBasicAnimation类的对象

IFrameworkView^ DirectXAppSource::CreateView()

{

    return ref new D2DBasicAnimation();

}

为了使项目能正常运行,最后需要在D2DBasicAnimation.cpp源文件中添加如下代码,定义一个主入口函数。

//项目的主入口函数

int main(Platform::Array<Platform::String^>^)

{

DirectXAppSource^ directXAppSource = ref new DirectXAppSource();

CoreApplication::Run(directXAppSource);

return 0;

}

在上面的代码中,定义了项目的主入口函数main,在此函数中创建一个DirectXAppSource类的对象directXAppSource,并将这个对象作为参数传递给CoreApplication类的Run函数。

运行Direct2DDemo项目将会在应用窗口中绘制如图20-16所示的红色三角形。

Win10系列:VC++绘制几何图形4

图20-16 Direct2D绘制的三角形

2.使用FillEllipse函数绘制圆形

在上面的Direct2DDemo项目中使用FillGeometry函数绘制了一个三角形,接下来将在这个项目的基础上继续介绍如何使用FillEllipse函数绘制一个圆形。打开D2DBasicAnimation.cpp源文件,并在Render函数中添加绘制圆形的实现代码,具体代码如下所示:

void D2DBasicAnimation::Render()

{

    //调用BeginDraw开始绘图

    d2dContext->BeginDraw();

    //设置应用窗口的背景颜色

    d2dContext->Clear(D2D1::ColorF(D2D1::ColorF::Gray));

    //定义一个圆形

    D2D1_ELLIPSE ellipse = D2D1::Ellipse(D2D1::Point2F(100.0f, 100.0f), 100.0f, 100.0f);

    //填充圆形区域

    d2dContext->FillEllipse(&ellipse,redBrush.Get());

    //结束图形的绘制操作

    d2dContext->EndDraw();

}

在上面的代码中,首先调用d2dContext指针所指向的对象的BeginDraw函数开始绘制图形,接着调用d2dContext指针所指向的对象的Clear函数将应用窗口的背景颜色设置为灰色。然后调用Ellipse函数得到一个D2D1_ELLIPSE结构体的变量ellipse,此结构体变量包含椭圆的圆心、X轴半径和Y轴半径,将圆心坐标设置为{100.f,100.f },把X轴半径和Y轴半径都设置为100.f来表示一个圆形。接下来以redBrush指针所指向的画刷对象作为参数,调用d2dContext指针所指向的对象的FillEllipse函数来填充ellipse结构体变量所定义的圆形区域。最后调用d2dContext指针所指向的对象的EndDraw函数结束图形的绘制操作。

运行Direct2DDemo项目将会在应用窗口中绘制如图20-17所示的红色圆形。

Win10系列:VC++绘制几何图形4

图20-17 Direct2D绘制的圆形

上面所绘制的圆形在应用窗口中是静止的,可以通过平移这个圆形中的点使其在应用窗口中移动,下面将介绍如何实现圆形的移动。