纯C语言实现图片与动画

要想实现图片或动画,首先和我们先要知道如何画点、画线、画矩形
注意:编写完代码后实现效果需要回到Ubuntu虚拟机最原始的页面:
这条博客有详细讲解怎么进入原始页面:
https://blog.csdn.net/qq_53287780/article/details/127130458?spm=1001.2014.3001.5501
运行步骤:
1、在终端输入init 3 使终端回到最原始的状态
2、输入密码:每个人ubuntu的密码不一样;我的是1
3、登陆的用户名:
4、密码再输一遍:
5、原始Ubuntu的终端页面;
6、编译及运行:回到文件所在的路径
gcc编译
./a.out运行
7、在原始终端输入 reboot/startx
就可以回到现在版本的Ubuntu界面)

进入正题:
第一步:
(已知条件:大屏幕由1176个像素点构成,小屏幕由800个像素点构成,图片大小为:宽:800

实现点的绘制

void draw_point(unsigned int *addr, int x, int y, unsigned int color)
{
   
	*(addr + 1176*y + x) = color;
}

实现线条的绘制

void draw_line(unsigned int *addr, int x, int y, int x1, int y1,unsigned int color)
{
   
	if(y == y1) //横线
	{
   
		while(x<=x1)
			draw_point(addr, x++,  y, color);
	}
	if(x == x1)
	{
   
		while(y<=y1)
			draw_point(addr, x,  y++, color);
	}
	if(x-x1 == y-y1) //45度
	{
   
		while(y<=y1)
			draw_point(addr, x++,  y++, color);
	}
}

实现矩形的绘制

void draw_rect(unsigned int *addr, int x, int y, int x1, int y1,unsigned int color)
{
   
	draw_line(addr, x,  y, x1, y, color);//-
	draw_line(addr, x1,  y, x1, y1, color);//|
	draw_line(addr, x,  y1, x1, y1, color);
	draw_line(addr, x,  y, x, y1, color);
}

最后来实现图片的绘制


void draw_bmp(unsigned int *addr, int x, int y, const char *bmpname)
{
   
	//1. 打开图片
	int fd = open(bmpname, O_RDONLY);
	if(-1 == fd)
	{
   
		perror("open bmp");
		return;
	}
	
	//2. 跳过54字节bmp头
	lseek(fd, 54, SEEK_SET);
	
	//3. 提取图像像素信息
	unsigned int buf[600]
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C语言实现AES/CTR是一种使用C语言编写的方式来实现AES(Advanced Encryption Standard)的CTR(Counter)模式加密算法。 在C语言实现AES/CTR算法需要对AES算法和CTR模式进行分别实现。 首先,需要实现AES算法,它是一种对称加密算法,要实现加密和解密功能。AES算法主要包括密钥扩展、轮密钥加、字节替换、行移位、列混淆等步骤。 其次,CTR模式是一种分块加密模式,它将明文分成若干块,并使用计数器加密每一块明文。CTR模式还需要实现一个计数器,用于生成每一块的加密密钥。 实现AES/CTR算法的步骤如下: 1. 实现AES算法的各个步骤,包括密钥扩展、轮密钥加、字节替换、行移位、列混淆等操作。这些操作可以用C语言中的位操作和数组操作实现。 2. 实现CTR模式的加密和解密过程。CTR模式需要实现一个计数器和密钥生成器。计数器用于生成每一块的加密密钥,密钥生成器用于生成密钥序列。 3. 将明文按照每一块的长度进行分割,并使用计数器生成每一块的加密密钥。然后,使用该密钥对每一块进行加密,可以用AES算法进行加密。 4. 对加密后的每一块密文进行拼接得到最终的密文。 5. 解密时,将密文按照每一块的长度进行分割,并使用计数器生成每一块的解密密钥。然后,使用该密钥对每一块进行解密,可以用AES算法进行解密。 6. 对解密后的每一块明文进行拼接得到最终的明文。 总之,C语言实现AES/CTR算法需要实现AES的各个步骤和CTR模式的加密和解密过程。通过理解和实现这些算法的原理,可以使用C语言编写出一个完整的AES/CTR加密算法。 ### 回答2: AES(Advanced Encryption Standard)是一种常用的对称加密算法,而CTR(Counter)是一种加密模式。要C语言实现AES/CTR,可以按照以下步骤操作: 1. 首先,需要实现AES算法中的加密和解密函数。可参考AES算法的标准实现。 2. 接着,需要实现CTR模式的加密和解密函数。CTR模式将加密算法作用于一个计数器产生的密钥流,然后与明文进行异或运算得到密文,解密时同理。可参考CTR模式的标准实现。 3. 在实现AES和CTR的函数时,需要使用C语言提供的位运算等操作来操作字节和位。 要注意的是,C语言实现AES/CTR可能相对较慢,因为C语言不擅长处理位级别的操作。如果对性能有较高要求的话,可以考虑使用汇编语言或者专门的密码库来实现加密算法。 总结来说,C语言实现AES/CTR需要依次实现AES算法的加密和解密函数,以及CTR模式的加密和解密函数,以及使用位运算等操作来操作字节和位。 ### 回答3: AES(Advanced Encryption Standard)是一种常用的对称加密算法,CTR(Counter)是一种加密模式。在C语言实现AES/CTR加密可以通过以下步骤完成: 首先,需要实现AES算法。AES算法基于分组密码,包括一系列轮函数和密钥扩展。可以使用C语言中的位操作来实现AES算法的各个步骤。 其次,需要实现CTR模式。CTR模式使用计数器作为输入,每次加密分组都会递增计数器的值。首先,需要定义一个计数器,然后将其与AES加密算法的输出进行异或操作,得到密文。 最后,编写一个主函数,用于读取明文和密钥,并调用上述的AES和CTR函数来进行加密。加密过程中,主函数会将明文分组按顺序送入CTR函数,得到对应的密文。 需要注意的是,C语言实现AES/CTR加密需要注意算法的效率和安全性。为了提高性能,可以使用C语言中的位操作进行优化。而为了保证安全性,需要对密钥进行适当的处理,如进行密钥扩展和密钥安全性检查。 总结起来,实现C语言中AES/CTR加密需要实现AES算法和CTR模式,并编写一个主函数来调用这些函数完成加密过程。这样可以在C语言环境下实现对称加密,保证数据的机密性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值