PixiJS学习(2)添加一个位图纹理

简介:

在所有的 2D(包括 3D) 渲染中都有 Texture 这样一个概念,翻译过来应该叫“纹理”。很多书籍或文章中对于它的解释五花八门,我个人的理解是:它是一个材质、贴图这样的概念。

这里所说的位图就是我们常说的一张图片,一个 .png 或者 .jpg 图片。

在原生的 canvas 中添加一张图片,我们使用的是 drawImage() 。可以对图片进行缩放和裁剪。

https://www.jianshu.com/p/ded27b13c230

image.png

 

添加一个图片:

// 使用 vue 语法
// 构建一个纹理
this.textures = PIXI.Texture.from('images/1.png')
// 将纹理添加到精灵当中
this.imgA = new PIXI.Sprite(this.textures);
// 设置锚点
//this.imgA.anchor.x = 0.5;
//this.imgA.anchor.y = 0.5;
this.imgA.anchor.set(0.5);
// 设置尺寸比例
// this.imgA.scale.x = -0.5;
// this.imgA.scale.y = 0.5;
this.imgA.scale.set(0.5);
//设置角度
this.imgA.rotation = Math.PI/3;// 旋转 60 度
//设置位置
this.imgA.x = 0;
this.imgA.y = 0;
// this.imgA.x = Math.random() * this.frameStage.screen.width; // 根据渲染场景大小取随机数
// this.imgA.y = Math.random() * this.frameStage.screen.height;

console.log(this.imgA);
// 将这个精灵添加到整舞台
this.frameStage.stage.addChild(this.imgA);

 

上面这段代码到整个过程是:

  • 将一张图片构建为一个纹理,PIXI.Texture.from;
  • 将纹理添加到精灵当中,new PIXI.Sprite(textures);
  • 设置精灵到各种属性;
  • 将精灵添加到整个舞台当中显示;

基础属性:

锚点:

可以简单的理解为一个精灵的作用点或者说是质点。包括设置位置,旋转……一系列基础属性的作用点。

对于锚点的设置,从实现的角度可以设置为任何位置。有两种设置方法:

  • 使用 set 方法,anchor.set(0.5)。 0.5 表示精灵中心,0 表示左上角,1 表示右下角;
  • 设置对应属性:anchor.x = 0.5,anchor.y = 0.5;同上 set(0.5);

尺寸:

这个就是长和宽的缩放值,可以实现等比缩放。而且可以设置为负数,实现对称镜像操作。

对于锚点的设置,有两种设置方式:

  • 使用 set 方法:scale.set(0.5);
  • 设置对应属性:scale.x = 0.5,scale.y = 0.5;同上scale.set(0.5);

角度:

它就是图片的旋转角度,它的作用点就是锚点;

对于角度的设置就是直接改变数字:这个角度是弧度值,不是传统的360度,

360 = Math.PI * 2;

位置:

它就是图片的 X 轴和 Y 轴的坐标值,作用点是锚点。它的坐标值是基于父坐标的。上面精灵的父容器是整个舞台,因此是从左上角开始算的;

单位是 px 也就是根据 canvas 的分辨率来算的;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 MFC 中,在头文件中创建一个位图可以通过 `CBitmap` 类来实现。你可以在类的私有成员变量中声明一个 `CBitmap` 对象,并在构造函数或其他适当的地方创建位图对象。 以下是一个示例代码,展示了如何在头文件中创建一个位图: ```cpp class CMyClass : public CWnd { private: CBitmap m_bitmap; // 其他成员变量和函数 public: // 构造函数和析构函数 afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() }; ``` 在上述示例中,`CBitmap` 类型的成员变量 `m_bitmap` 用于存储位图对象。你可以根据需要在类中声明其他成员变量和函数。 然后,在构造函数或其他适当的地方,通过调用 `CreateBitmap` 或 `LoadBitmap` 函数来创建位图对象,并将其赋值给 `m_bitmap` 成员变量。例如: ```cpp CMyClass::CMyClass() { m_bitmap.CreateBitmap(/* 位图宽度 */, /* 位图高度 */, /* 位图颜色位数 */, /* 位图数据 */); // 或者 m_bitmap.LoadBitmap(/* 位图资源 ID */); } ``` 上述代码中,`CreateBitmap` 函数用于创建一个新的位图对象,你需要指定位图的宽度、高度、颜色位数以及位图数据。另外,`LoadBitmap` 函数用于从资源中加载一个位图对象,你需要指定位图资源的 ID。 在 `OnPaint` 函数中,你可以使用位图对象进行绘制操作。例如: ```cpp void CMyClass::OnPaint() { CPaintDC dc(this); CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap); // 在 memDC 上进行绘制操作 dc.BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY); memDC.SelectObject(pOldBitmap); } ``` 在上述示例中,我们创建了一个兼容于窗口 DC 的内存 DC 对象 `memDC`,并将位图对象 `m_bitmap` 选择到 `memDC` 中。然后,我们可以在 `memDC` 上进行绘制操作。最后,使用 `BitBlt` 函数将绘制的结果从 `memDC` 复制到窗口 DC 中进行显示。 希望对你有所帮助!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻蝶Love

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值