【干货】C++游戏外挂开发教程11:画方框透明矩形

文摘   社会   2025-01-04 17:00   广西  


欢迎来到C++游戏外挂开发系列教程! 

游戏外挂开发是一个既有挑战性又充满乐趣的领域,它让我们有机会深入探索计算机程序设计和系统底层原理。本教程将带领你从零开始,逐步学习如何使用C++编程语言开发游戏外挂,包括各种常见游戏中的作弊功能,如自动射击、透视功能、无敌模式等。通过本系列教程,你将了解到游戏外挂的基本原理、常见开发工具、技术挑战和实际应用技巧,为你打造成一名优秀的游戏外挂开发者提供全面的指导。

我们接着讲一些函数,因为它们在腾讯微信和许多游戏中使用,当你hook这些函数时,直接就可以获取到所有天气信息,所以必须详细讲解这些函数。接下来的课程将教你如何编写这个dl,并且进行相关操作。
首先我们会画一些东西,比如画线、画图形、画点、画矩形等等,还有画透明的东西。就这些简单的内容,本期放松一点,就不讲太多了。
接下来,我们要认真写代码了,我们要写一个图形处理类,加上一些新的功能。我们要在上面画线,首先要写一个划线的函数。然后我们要设置画笔和画布,这很重要。
对了,画笔的大小可能太小了,需要调整一下,看看还够不够大。设置画笔颜色也很重要,我们要根据需要设置不同的颜色。画笔的风格也很多,我们要考虑这些。然后要创建画笔,把它放在画布上,这样就可以开始画图了。
划线的方法是什么?之前有人问了我这个问题,我们来讲一下。然后,我们继续设置画笔的一些属性,最后把画笔放到画布上。这样,就可以开始画图了。
我们要讨论一下线的头部和尾部,这其实是关于换点的操作。我们先从头部开始画线吧。首先,我们将这个线条绘制在画布上,然后画线的头部。
我们来查一下这个函数的第三个参数是什么?是传入新的 x 坐标吗?这个参数是用来传出一个点的,用来保存上一个点的位置。这个点可以理解为起点,然后我们画线到哪儿去呢?就是在原来的 x 坐标上加上线的长度,这个长度是从这个点到另一个点的距离。
在我们画线的过程中,我们会保存上一个点的位置,这个点可能用于连续画线的情况。但是一般情况下我们并不需要使用它。
现在让我们来调用一下这个函数,看看是否能够包含它。首先,我们要做的是设置画布,然后设置画笔的风格、粗细和颜色。接下来就是画线了,我们从起点开始,画到另一个点。
看,这样我们就能画出一条蓝色的线了。接下来,我们再换一个风格,画一条绿色的线。对于绿色,我们需要调整一下 RGB 值,让基值调到最大。这样我们就可以通过这些操作画出不同风格和颜色的线条了。
我们要换右边了,右边的起点应该是多少呢?我们把右边画到 300,是吧?但是位置好像错了,起点错了。起点应该是多少呢?应该是加上 300,对吧?所以 y 应该是 300。再来一个黄色的线条吧。
黄色的 RGB 是 (255, 255, 0),因为红和绿相加就是黄色,对不对?所以蓝色就是零。我们试试看是不是 100。
设置错了,应该是这里啊。那我们再试试设置这个颜色,我们设置的是它的坐标,对吧?这个 x 轴不变,y 轴变成了 50 加 300,应该是这样才对。
怎么还是绿色呢?它的亮度不够。调整一下,让它变成黄色吧。我看一下,应该是 200 吧?但是这个 y 坐标好像不对。应该是 300。再来一个黄色的吧,就用 230,看看是不是黄色了。再来一个绿色的,我们调整一下,把基值调到最大吧。
这样就可以画出不同风格和颜色的线条了。但是我们需要注意,线条的粗细不能太大,不然就显示不出效果了。像素点不能太大。
接下来,我们再画一个图形吧,比如一个矩形。我们设置了填充颜色,但是画笔还是要画边缘的。这样,我们就可以继续进行操作了。
我们需要使用一个画刷,就像我们使用画笔一样。我们来写一个画刷,设置它的颜色。bgr 表示画刷的颜色,我们可以选择一些花哨的颜色。
然后,我们也要记得释放这个对象,释放画刷。如果不释放的话,可能会出现一些问题。我们试一下设置画刷,将颜色设置成蓝色。试了一下,似乎没有显示出来。我们再试一下把这个画刷的号赋值给它。
返回画刷,强制转换一下。我们改一下叫做 gbrush。但是为什么它总是搞成红色呢?啊,搞反了,应该是 RGB 才对啊。红色看起来好一点。再画一个透明图吧,试试它的颜色。画透明矩形的时候,我们还要设置一个透明度,对不对?是的,透明度要设置好。
我们再讲一下透明矩形,然后就删除它。我们再定义一个 hdc,再定义一个 memory,还要一个位图。在代码开头释放资源的原因是什么呢?为什么不在结尾释放呢?我们来思考一下这个问题。为什么要在函数开头释放资源呢?为什么不在结尾呢?大家考虑一下。
我给大家讲一下,为什么要在开头释放。如果你开启一个线程,你每次进来的时候要关闭线程,对吧?那如果线程在中间运行的时候关闭了呢?你把线程关了,那这些资源怎么办呢?如果放到结尾,线程运行到中间关闭了,没运行到这里,怎么办呢?所以我就想到,把释放放到前面来吧。反正一进来,就会执行下边的函数,我们就先释放。这样没运行到这一步之前,我们就不会申请新的资源,不会创建新的对象。这样就万无一失。
你看,只要一调用这个函数,就会释放,不管什么时候关闭,都会释放。如果放到结尾,线程突然崩了,没运行到这里,内存就泄漏了啊,程序就越来越卡了。理解了吗?
我们的目的不是保持程序空的状态,而是保证程序不泄露内存。我们只需要在管理的状态下保证程序不泄露内存,等程序关闭了,还管他什么呢?对吧?
然后我们一起来创建一个位图。创建位图的时候,我们要创建它的宽度和高度,然后还要选择对象。这个函数一定要好好研究一下,我们不停地在用,它到底是干什么的呢?好好查一下它的说明,明白了吗?
这个内存剧情就是关于我们的透明矩形,对吧?是的,然后我们设置它的属性。我们想要设置它的透明色,也就是它的 RGB 颜色值。接下来,再调用一个函数,这个函数一定要记住,以后我们搞事情的时候会用到。这个函数可以提取出很多有用的信息,比如文本消息等等。
我们把内存运行传进来,它可以用作很多事情,比如传递图形、传递文字等等。然后我们开始画透明矩形,和之前的操作相似。首先,我们初始化一个结构体,然后清零初始化之后,我们要改一下参数,这些参数比较多。然后,我们把这个内存图形的颜色放到内存 DC 里面。这样我们就可以直接显示了。



暮色的狐
这是一只高强度上网冲浪、高质量输出内容的狐狸。主打ACGN杂谈、技术干货分享、第九艺术鉴赏、网梗百科解析、情感树洞鸡汤、正能量价值观~
 最新文章