SimpleCG图像操作基础

        上一篇我们介绍了程序的交互功能,就可以编写一些简单的游戏了,例如贪吃蛇、扫雷、俄罗斯方块、五子棋等,都可以使用图形函数直接绘制,在后续文章中将逐一展示。不过编写画面丰富游戏离不开图像,所以本篇我们介绍一下基本的图像操作。

一、图像装载及释放

SimpleCG中图片使用结构SCG_Image保存,一般不需要了解SCG_Image内部结构,只需记住用该数据关联了图片。并通过该结构进行图片操作即可,相当于一个编号使用。所以装载图片使用如下代码

SCG_Image imgGet=image_load( _T("G:\\images\\demo.gif"));

该示例装载了g盘images目录下的demo.gif图片,保存在imgGet变量中,后续可通过该变量将图片显示出来。

需要注意的是所有装载及创建的图片使用完都需要使用

image_release(&imgGet);

进行内存释放,否则将导致内存泄露。使用的是图片变量的指针(&imgGet)进行调用。

二、图片显示

函数声明


//绘画图片到当前设备坐标(nX,nY)
void image_draw( SCG_Image* pSrcImg, int nXDst, int nYDst );void image_drawEx( SCG_Image* pSrcImg, int nXDst, int nYDst, int nXSrc, int nYSrc, int nSrcWidth, int nSrcHeight );void image_drawZoom( SCG_Image* pSrcImg, int nXDst, int nYDst, int nDstWidth, int nDstHeight );void image_drawZoomEx( SCG_Image* pSrcImg, int nXDst, int nYDst, int nDstWidth, int nDstHeight, int nXSrc, int nYSrc, int nSrcWidth, int nSrcHeight );

1、直接显示整幅图到指定位置

所以需要显示上面装载的图片到窗口(0,0)位置,可使用如下代码

//在坐标10,20处绘制图片
image_draw( &imgGet, 0,0);

 效果如图

2、如果只显示部分图片

可使用image_drawEx,传入要显示的图片的起始位置及大小,以及要绘制的目标坐标。例如小熊在图片的位置在从左上角(300,200)位置开始,长度宽度为(400,400)范围,我们把它显示在窗口坐标(20,20)位置,可按如下调用

SCG_Image imgGet=image_load( _T("xiong.png"));
image_drawEx( &imgGet, 20,20, 300,200,400,400 );
image_release(&imgGet);

显示效果如图

 3、缩放显示整幅图使用image_drawZoom

例如我们有一张多拉a梦的透明背景图(180x180),需要放大一倍显示在上面图片的小熊旁边

    SCG_Image imgGet=image_load( _T("xiong.png"));SCG_Image imgduola=image_load( _T("duola.png"));image_draw( &imgGet, 0,0);image_drawZoom( &imgduola, 150,200,360,360 );image_release(&imgGet);image_release(&imgduola);

 效果如图显示

 4、随意缩放图片任何部分到任意位置,使用image_drawZoomEx

例如我们要把树枝从一棵树图片上砍下,给多拉a梦一把树枝拿在手上,可用如下代码

    SCG_Image imgGet=image_load( _T("xiong.png"));SCG_Image imgduola=image_load( _T("duola.png"));SCG_Image imgtree=image_load( _T("tree.png"));image_draw( &imgGet, 0,0);image_drawZoom( &imgduola, 150,200,360,360 );image_drawZoomEx( &imgtree, 140,300,100,100, 0, 0, 50, 50 );image_release(&imgGet);image_release(&imgduola);image_release(&imgtree);

效果如图

以上就是图片显示相关函数。我们可以看到绘制函数直接支持图片透明通道,所以需要透明合成图片时,可用直接使用png透明图片即可。所以暂时SimpleCG不提供额外操作透明显示及合成的高级函数。

三、图片长宽参数获取


//获取图片宽度
UINT image_getwidth( SCG_Image* pDstImg );
//获取图片高度
UINT image_getheight( SCG_Image* pDstImg );

这两个函数可获取指定图片大小,进而进行相关操作,例如缩放等。 

四、结语

        以上就是图片的基本操作,对于其他更多的图片操作,例如多帧gif图片操作,图片保存,创建空图片,截取窗口图片等可以查看后续文章,或者自学能力强的同学可查看库文件说明。

 

库安装方法如下

SimpleCG库安装使用_b2b160的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/109700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能合同和TikTok:揭示加密技术的前景

在当今数字化时代,智能合同和加密技术都成为了技术和商业世界中的热门话题。它们代表了一个崭新的未来,有着潜在的巨大影响。 然而,你或许从未想过将这两者联系在一起,直到今天。本文将探讨智能合同和TikTok之间的联系&#xff0…

代码随想录算法训练营Day56|动态规划14

代码随想录算法训练营Day56|动态规划14 文章目录 代码随想录算法训练营Day56|动态规划14一、1143.最长公共子序列二、 1035.不相交的线三、53. 最大子序和 动态规划 一、1143.最长公共子序列 class Solution {public int longestCommonSubsequence(String text1, String text2…

sql聚合函数嵌套问题 aggregate function cannot contain aggregate parameters

在需求的应用场景,需要对create_time字段求最小值并求和,刚开始理所当然写成像下面这样: SUM(COALESCE (CASE WHEN MIN(crl.create_time) BETWEEN date_add(date_sub(current_date(), 1), -1 * (open_case_day_num % 6)) AND current_date()…

辉视IP对讲与SIP视频对讲:革新的通信技术与应用领域的开启

辉视IP对讲与辉视SIP视频对讲系统,不仅在技术上实现了一次革新,更在应用领域上开启了新的篇章。它们不仅仅是一种通信工具,更是一种集成了先进技术和多种功能的高效解决方案,为各领域提供了一种安全、便捷、高效的通信体验。 辉视…

5. 函数式接口

5.1 概述 只有一个抽象方法的接口我们称之为函数接口。 JDK的函数式接口都加上了 FunctionalInterface 注解进行标识。但是无论是否加上该注解只要接口中只有一个抽象方法,都是函数式接口。 在Java中,抽象方法是一种没有方法体(实现代码&a…

【AOP系列】6.缓存处理

在Java中,我们可以使用Spring AOP(面向切面编程)和自定义注解来做缓存处理。以下是一个简单的示例: 首先,我们创建一个自定义注解,用于标记需要进行缓存处理的方法: import java.lang.annotat…

联想G50笔记本直接使用F键功能(F1~F12)需要在BIOS设置关闭热键功能可以这样操作!

如果开启启用热键模式按F1就会出现FnF1的效果,不喜欢此方式按键的用户可以进入BIOS设置界面停用热键模式即可。 停用热键模式方法如下: 1、重新启动笔记本电脑,当笔记本电脑屏幕出现Lenovo标识的时候,立即按FnF2进入BIOS设置界面…

表单规定输入域的选项列表(html5新元素)

datalist datalist 元素规定输入域的选项列表。 datalist属性规定 form 或 input 域应该拥有自动完成功能。当用户在自动完成域中开始输入时,浏览器应该在该域中显示填写的选项: 使用 input元素的列表属性与datalist元素绑定. 还有一定的搜索能力&…

CVE-2020-9483 apache skywalking SQL注入漏洞

漏洞概述 当使用H2 / MySQL / TiDB作为Apache SkyWalking存储时,通过GraphQL协议查询元数据时,存在SQL注入漏洞,该漏洞允许访问未指定的数据。 Apache SkyWalking 6.0.0到6.6.0、7.0.0 H2 / MySQL / TiDB存储实现不使用适当的方法来设置SQL参…

GPIO基本原理

名词解释 高低电平:GPIO引脚电平范围:0V~3.3V(部分引脚可容忍5V)数据0就是0V,代表低电平;数据1就是3.3V,代表高电平; STM32是32位的单片机,所以内部寄存器也都是32位的…

FilterRegistrationBean能不能排除指定url

文章目录 什么是FilterRegistrationBean举个栗子但是如果我想要排除某些uri方法总结FilterRegistrationBean只能设置指定的url进行过滤,而不能指定排除uri,只能使用OncePerRequestFilter的shouldNotFilter方法,排除uri 什么是FilterRegistrationBean FilterRegistrationBean是…

用于细胞定位的指数距离变换图--Exponential Distance Transform Maps for Cell Localization

论文:Exponential Distance Transform Maps for Cell Localization Paper Link: Exponential Distance Transform Maps for Cell Localization Code(有EDT Map的生成方式): https://github.com/Boli-trainee/MHFAN 核…

深入了解Golang:基本语法与核心特性解析

1. 引言 Golang(Go)是谷歌开发的一门开源编程语言,于2007年首次公开亮相,随后在2012年正式发布。Golang以其简洁、高效和可靠的设计而备受开发者青睐。作为一门编译型语言,Golang具有静态类型和垃圾回收功能&#xff…

网络编程 - TCP协议

一,TCP基本概念 TCP的特性: TCP是有连接的:TCP想要通信,就需要先建立连接,之后才能通信 TCP是可靠传输:网络上进行通信,A给B发消息,这个消息是不可能做到100%送达的,所以…

树模型(三)决策树

决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。 长方形代表判断模块 (decision block),椭圆形成代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作为分支(branch)…

【大数据 - Doris 实践】数据表的基本使用(三):数据模型

数据表的基本使用(三):数据模型 1.Aggregate 模型1.1 例一:导入数据聚合1.2 例二:保留明细数据1.3 例三:导入数据与已有数据聚合 2.Uniq 模型3.Duplicate 模型4.数据模型的选择建议5.聚合模型的局限性 Dori…

【AI视野·今日CV 计算机视觉论文速览 第268期】Mon, 16 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Mon, 16 Oct 2023 Totally 61 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Vision-by-Language for Training-Free Compositional Image Retrieval Authors Shyamgopal Karthik, Karsten Roth, Massi…

OpenCV11-图像的模版匹配

OpenCV11-图像的模版匹配 图像的模版匹配 图像的模版匹配 前面通过图像直方图反向投影的方式在图像中寻找模版图像,由于直方图不能直接反映图像的纹理,因此,如果两幅不同的模版图像具有相同的直方图分布特性,那么在同一幅图中对着…

react-redux的connect函数实现

react-redux对store订阅的实现原理: storeContext.js import { createContext } from "react";export const StoreContext createContext() connect.js import React, { PureComponent } from react // import store from ../../store; import {Stor…

ESP RainMaker 客户案例 #2|PitPat

PitPat 是美国领先的健身品牌,致力于通过游戏化的方式改变人们的锻炼习惯,增强健康。该品牌通过智能设备和相关的移动应用程序为从事家庭锻炼的个人提供虚拟跑步体验。目前,PitPat 针对不同受众群体,开发了Superun,Dee…