这次学习的地址是http://eyehere.net/2011/python-pygame-novice-professional-5/#comment-354

英语水平急剧降低,我还是把学习中碰到的英语单词记下来吧,,,

1.set the color value for a single pixel:为单个像素设置颜色值


2.Set the RGBA or mapped integer color value for a single pixel. If the Surface does not have per pixel alphas, the alpha value is ignored. Setting pixels outside the Surface area or outside the Surface clipping will have no effect.为每个像素设置RGBA或映射整数值,如果不需要透明度,则透明度这个参数被忽略,如果设置的像素位置不在surface上,则是无效的

Getting and setting pixels one at a time is generally too slow to be used in a game or realtime situation.在游戏中或者现实场景中单个单个地设置像素太慢而一般不会使用

This function will temporarily lock and unlock the Surface as needed.这个函数将根据需要临时锁定和解锁surface。

surface.set_at(position,rgba)->examples:

surface.set((200,300),0,0,0,2)或surface.set_at((200,300),0,0,0)

import pygame
pygame.init()screen = pygame.display.set_mode((640, 480))all_colors = pygame.Surface((4096,4096), depth=24)for r in xrange(256):print r+1, "out of 256"x = (r&15)*256y = (r>>4)*256for g in xrange(256):for b in xrange(256):all_colors.set_at((x+g, y+b), (r, g, b))pygame.image.save(all_colors, "allcolors.bmp")

我认为这个代码不能生成所有颜色,下一次的颜色设置有些必然会覆盖之前设置的颜色。

用一个Python脚本生成三原色:

#!/usr/bin/env python
import pygame
from pygame.locals import *
from sys import exitpygame.init()screen = pygame.display.set_mode((640, 480), 0, 32)
#1
def create_scales(height):red_scale_surface = pygame.surface.Surface((640, height))green_scale_surface = pygame.surface.Surface((640, height))blue_scale_surface = pygame.surface.Surface((640, height))for x in range(640):c = int((x/640.)*255.)red = (c, 0, 0)green = (0, c, 0)blue = (0, 0, c)line_rect = Rect(x, 0, 1, height)pygame.draw.rect(red_scale_surface, red, line_rect)#将渐变颜色填充在矩形rect里pygame.draw.rect(green_scale_surface, green, line_rect)pygame.draw.rect(blue_scale_surface, blue, line_rect)return red_scale_surface, green_scale_surface, blue_scale_surfacered_scale, green_scale, blue_scale = create_scales(80)color = [127, 127, 127]
#2
while True:
#2.1for event in pygame.event.get():if event.type == QUIT:exit()screen.fill((0, 0, 0))screen.blit(red_scale, (0, 00))screen.blit(green_scale, (0, 80))screen.blit(blue_scale, (0, 160))
#2.2x, y = pygame.mouse.get_pos()if pygame.mouse.get_pressed()[0]:for component in range(3):if y > component*80 and y < (component+1)*80:color[component] = int((x/639.)*255.)pygame.display.set_caption("PyGame Color Test - "+str(tuple(color)))
#2.3for component in range(3):pos = ( int((color[component]/255.)*639), component*80+40 )pygame.draw.circle(screen, (255, 255, 255), pos, 20)pygame.draw.rect(screen, tuple(color), (0, 240, 640, 240))pygame.display.update()

效果图如下:

这里先讲一下鼠标事件和相关函数,然后再解读这个程序:

第一个参数表示事件,第二个参数表示该事件产生的条件,第三个参数表示描述该事件的参数

附上一张图来描述一下:

程序思路:

1.先创建三个子surface,然后将渐变颜色填入这三个子surface里面,这也就是create_scalse函数的作用

2.然后就是while循环了,将三个子surface画进大的screen里面,并接受处理鼠标事件。#2.2是将鼠标位置值转换为rgb值,#2.3部分是在鼠标的位置画圆和更新下方矩形框内的颜色(注意:#2.2和#2.3的执行有小小的区别,#2.2部分的执行是有条件的,即发生鼠标点击这个事件,而#2.3是每一次while都需要执行的)

然后讲解一下pygame.mouse.get_pressed()函数就OK了

该函数返回值有三个参数(x,y,z),当鼠标左键点击后,x的值就返回为1,当鼠标右键点击后,z的值就返回为1,当没有点击事件发生时,该函数返回(0,0,0)

另外补充一下get_pressed和MOUSEDOWN事件,当你把鼠标一直按下时,get_pressed就会一直感知到,而MOUSEDOWN只处理一次鼠标按下事件。

附带一下碰到的资源:http://bbs.fishc.com/thread-62164-1-1.html和http://bbs.fishc.com/thread-62190-1-1.html和http://www.pygame.org/docs/ref/display.html#pygame.display.set_mode

补充一下(复习笔记):

隔了一个星期没有碰pygame(因为忙于实习和其他事情),重新看第二个程序都有点生疏了,记下现在生疏的地方,看以后还会不会

1.创建一个surface对象,传入长和宽

pygame.surface.Surface

2.创建一个矩形对象,前面两个参数是矩形左上角定点的坐标,后面两个参数分别是宽和高

Rect(x, 0, 1, height)

3.在surface上画某个矩形框,第一个参数是母surface,第二个参数是颜色,第三个参数是矩形框对象或者四个值

pygame.draw.rect(red_scale_surface, red, line_rect)

4.将一个surface绘制到另外一个surface上,第一个参数是一个surface对象,第二个参数是所需要绘制矩形区域的左顶点的坐标

screen.blit(red_scale, (0, 00))

5.在surface上画某个圆,第一个参数为surface对象,第二个参数为颜色,第三个参数为圆心的坐标,第四个参数为半径

pygame.draw.circle(screen, (255, 255, 255), pos, 20)

学习Pygame和巩固Python——画颜色~相关推荐

  1. Python零基础学习 | 分享一个使用Python画出太极阴阳八卦图的代码

    大家好,我是王某人. 一.写在前面 前几天在Python技术交流群有个小伙伴分享一个使用Python画出太极阴阳八卦图的代码,这里拿出来给大家分享下,一起学习下. 不过这里他的代码是有点问题的,不过不 ...

  2. python颜色形状识别_Python学习(10)Python+Opencv颜色和形状检测

    目录 一.场景需求解读 现实场景中,我们有时需要自动的检测出图片中目标的颜色和其对应的形状,然后根据这些信息快速的找到我们需要的目标,这在真实场景中具有广泛的应用.下图展示了一张实例,我们需要知道图片 ...

  3. 教你怎样用Python画了一棵圣诞树,快来学习

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT入门 分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何 ...

  4. 画圣诞树的matlab程序,教你怎样用Python画了一棵圣诞树,快来学习

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT入门 分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何 ...

  5. 教你用Python画了一棵圣诞树

    分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何用Python画一个圣诞树呢? 最简单: height = 5 ​ stars = 1 for i in range(heig ...

  6. python画圣诞树代码解读_使用Python画了一棵圣诞树的实例代码

    分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何用Python画一个圣诞树呢? 最简单: height = 5 ​ stars = 1 for i in range(heig ...

  7. 用python的turtle画圣诞树_使用Python画了一棵圣诞树的实例代码

    分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何用Python画一个圣诞树呢? 最简单: height = 5 ​ stars = 1 for i in range(heig ...

  8. 用python画哆啦a梦的身体_每天一个Python小技巧,用Python 画个多啦A梦,小猪佩奇,文末还有Python入门学习视频...

    见网络上有人用Python 画出来个多啦A梦,很是新奇,来来来,我们看一下他们主要用到的库. 其实主要用的库就一个 turtle 库 先说明一下turtle绘图的基础知识: 1. 画布(canvas) ...

  9. python turtle绕原点旋转_每天一个Python小技巧,用Python 画个多啦A梦,小猪佩奇,文末还有Python入门学习视频

    见网络上有人用Python 画出来个多啦A梦,很是新奇,来来来,我们看一下他们主要用到的库. 其实主要用的库就一个 turtle 库 先说明一下turtle绘图的基础知识: 1. 画布(canvas) ...

最新文章

  1. SharePonit Host WCF 注意事项
  2. Hibernate基本原理(一)
  3. Mac上运行第一个Hadoop实例
  4. 华为手机logcat不出日志解决方案
  5. 典型的Linux系统启动需要完成的服务
  6. lua C++ wrapper
  7. 打靶法matlab求边值问题代码,数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)...
  8. sencha touch中list如何撑满整个view
  9. [转]12个jquery插件
  10. Solidity 0.5 address payable和address的区别是什么?
  11. 语言程序推箱子课设报告_“延期不延学”第13期 | C++篇 | c++课设建议
  12. EMNLP 2021 | 罗氏和博阿齐奇大学研究合作团队提出:多标签文本分类中长尾分布的平衡策略...
  13. SEO专题之四:如何合理有效选定关键字
  14. 最实诚导师招生简章“火”了:目前只有不太充足的经费,但绝不克扣研究生补贴!...
  15. 35c语言编程,35编号c语言编程题08850.pdf
  16. linux中批量替换文本中字符串
  17. 82ip网 - 每日更新50万HTTP和HTTPS代理IP!
  18. linux 安装软件出现:“E:无法定位软件包”
  19. git pull报错Pulling is not possible because you have unmerged files
  20. r语言提取cvs数据_r语言,csv数据,提取特定行

热门文章

  1. 【转】登录后自动显示未读快件
  2. 采购订单相关Table
  3. 逻辑数据库读取bseg
  4. 如何隐藏你写的ABAP代码
  5. 不要把HANA跟BW混为一谈
  6. ABAP之Screen
  7. 计算机硬件系统设计mooc,计算机硬件系统设计MOOC答案
  8. Linux字体大小颜色,Linux技巧:自定义Gnome面板字体和颜色
  9. c语言农夫过河游戏代码解释,农夫过河C++代码
  10. Swift 位运算练习