智绘教 —— 全新一代屏幕画板工具 金牌收录

智绘教——不仅仅只是一个屏幕画笔工具。是一个运行于桌面的画板的软件,可以用于教学,网上授课和非常多的场景。绝大部分 Windows 电脑和教学一体机都可以使用。无论是屏幕的书写,还是图形的绘制,都可以轻松驾驭。由 HiEasyX(EasyX 扩展库) 和 GDI+ 驱动,项目开源。

保留透明(Alpha)信息地旋转图像 铜牌收录

EasyX 的旋转函数 rotateimage 不支持含有透明信息的图像的旋转,在设置了背景色的情况下会丢失透明信息,故特地编写了保留透明信息的旋转函数。 在此之前也有人写过此类旋转函数,旋转效果很好,也实现了目标效果,可惜存在一些致命 Bug,否则我也不会再造轮子。此旋转函数是原创的,取前人所长,去前人所短,绝对能满足您的旋转需求,让您也不必再造轮子。

创建一个不受系统缩放设置(DPI)影响的绘图窗口 铜牌收录

现在的屏幕分辨率都比较高,为了使屏幕字体不至于太小,通常在 Win10 的显示设置里面设为放大 125% 或 150% 或更大,这样就会导致像素实际上被放大了。

如果你的程序不希望受系统缩放设置影响,你需要使用一个新的 API 函数:SetProcessDpiAwareness

注意这个 API 函数的使用条件:

  • Win8.1 及以上版本
  • 头文件 ShellScalingApi.h
  • 库文件 Shcore.lib

以下是一个完整的范例程序,该范例创建一个不受系统缩放设置影响的绘图窗口,并画一个圆:

// 编译环境:Win10 + VS2019 + EasyX_20200727
//

// 设定操作系统版本为 Win10(需要放到 #include <graphics.h> 前面)
#define WINVER 0x0A00
#define _WIN32_WINNT 0x0A00

...

不用创建项目,直接在 VS 里快速测试 C/C++ 代码 铜牌收录

概述

Visual Studio 强大、方便,但是每次写代码都要先创建新项目,这对于一些简单的代码测试来说有点不方便。

本文介绍一种使用 VS 快速测试代码的方法。

该方法适用任何版本的 VS。“不用创建项目”,是指不用“手工”创建项目,而是通过批处理命令,自动完成相关功能,实现双击图标后就进入代码编写环境。

准备工作

先按照如下步骤进行准备(请根据实际情况调整路径):

1. 建立文件夹 D:\TestCpp\,里面存放用来快速测试代码的项目。

2. 打开 Visual Studio,创建一个 Win32 Console Application 项目作为模版,项目路径 D:\TestCpp\Template\TestCon,其它设置根据自己的习惯来。然后添加代码文件 main.cpp:

#include <stdio.h>

int main()
{
	printf("Hello W
...

彻底卸载 Visual Studio、SQL Server 等微软开发平台的官方工具 铜牌收录

像 Microsoft Visual Studio(Visual C++)、SQL Server 等微软系的开发平台,不仅仅要安装开发环境,还要安装许多相关组件,涉及到的安装位置除了软件的安装文件夹之外,还有好些组件在系统盘以及系统文件夹内,如果不小心改动了某些组件或者删除了某个文件夹,经常会造成无法彻底卸载的问题。除了卸载,有些安装文件夹只有第一次安装的时候才能选择路径,如果不彻底卸载,再次安装的时候就无法重新选择安装路径。

所以这时候,我们需要一个安全的、官方的、有效的、简单的卸载工具。

这个工具微软已经帮我们准备好了:Microsoft Program Install and Uninstall Troubleshooter

【点这里】查看微软对该工具的介绍,里面有微软的官方下载地址。

不想看那么多的,可以直接【点这里】

...

详解透明贴图和三元光栅操作 金牌收录

透明贴图,是指贴图时某些部分是完全透明的或半透明的。

本文介绍多种透明贴图的方案,包括:

  1. 指定透明色贴图(基于 Windows API 函数 TransparentBlt)
  2. 指定透明色贴图(基于直接操作显示缓冲区)
  3. 使用三元光栅操作实现透明贴图
  4. 根据 png 的 alpha 信息实现半透明贴图(基于 Windows API 函数 AlphaBlend)
  5. 根据 png 的 alpha 信息实现半透明贴图(基于直接操作显示缓冲区)

各种方法各有利弊,大家可以根据自己的需求选择。

1. 指定透明色贴图(基于 Windows API 函数 TransparentBlt)

这是最简单的透明贴图方法。

该方法要求图片素材的透明部分为纯色,因此建议使用 gif 或 png 格式的图片素材。如果使用 jpg 格式的图片素材,那么由于 jpg 的有损压缩,会造成边缘颜色有微小差异,与指定的透明色并不完全相同,从而导

...

制作图片素材的必备知识 铜牌收录

平时常用的图片格式有 bmp、jpg(jpeg)、gif、png 等。其中,bmp 是无损压缩,文件体积比较大,通常都会用其他格式来代替 bmp。所以本文着重讲 jpg、gif、png 三种格式。

首先必须要提到的是:修改图片扩展名并不会修改图片格式。图片格式,是图片各像素点的组织方式,不同的格式有不同的文件头和压缩算法等。而扩展名,仅仅是一个格式的标识,方便人们辨识格式。只修改扩展名,会造成图片文件的标识与内容不符,影响图片加载。因此,必须通过绘图软件将图片保存为相应格式。

图片格式的区别

jpg 适合保存照片这类颜色丰富、图案复杂的图像,使用有损压缩。尤其在保存简单颜色的图像时,有损压缩会使颜色边缘出现“不干净”的问题。

gif 适合保存颜色简单、内容简单的图像,使用无损

...

正确实现“按任意键继续”功能 铜牌收录

在大家写程序的时候,经常会遇到“按任意键继续”这样的功能。网上能找到的方法主要有两种:

  1. 使用 _getch() 语句
  2. 使用 system("pause") 语句

现在挨个说说。

_getch()

_getch() 功能是从控制台输入一个字符(控制台不显示该输入),是 conio.h 里面声明的一个函数。
所以 _getch() 很好的实现了“按任意键继续”的功能。

system("pause")

system 的功能是通过控制台执行一个命令,是 stdlib.h 里面声明的一个函数。
该函数需要一个字符串指针参数表示命令。这里,"pause" 就是 system 函数将要执行的命令。

pause 命令的功能,可以在控制台 cmd.exe 下输入 pause /? 查看,可以看到,pause 的功能是:暂停并显示信息“Press any key to

...

使用程序代码输出常见的字体图标(标志图片) 铜牌收录

程序中经常会使用一些常规的标志(图标、Logo)图片,例如,音量开关、各种方向箭头、扑克牌花色、邮件、电话、磁盘、笑脸/哭脸、五星等等。通常做法是,制作好图片,然后在特定的位置将图片显示出来。本文讲述如何通过输出文字的形式将这些常规的标志图片进行输出。

打开帮助文件 EasyX_Help.chm 后,内容为空白的解决办法 铜牌收录

有些同学遇到这样的问题,打开 EasyX 的帮助文档 EasyX_Help.chm 之后,发现所有的内容点击后都是空白的,就像下面这样:

这是由于 Windows 的安全机制造成的,当你从网上直接下载一个 chm 文件,或者用 Windows 资源管理器从压缩包里面解压出来 chm 文件,都会被 Windows 认为目标文件不够安全,然后默认被锁定。

所以,只需要简单解锁就可以了。

这样做:右击 EasyX_Help.chm 文件,在属性页中,会看到底部的“安全”一项,“解除锁定”没有勾选,如下图:

只需要简单的勾选“解除锁定”,然后点击确定,就可以正常浏览 chm 文件了。