文章来源地址https://www.toymoban.com/news/detail-638442.html
import cv2
import pygame
import sys
from pygame import gfxdraw
import numpy as np
(width, height) = (800, 600)
pygame.init()
screen = pygame.display.set_mode((width, height))
image = pygame.image.load("11.jpg").convert()
d3=pygame.surfarray.array3d(image)
f=250#数字大会显示更前面的图片
sc=300#数字越大视角越高
color=(255, 255, 255)
#print(len(d3[0][0]))#len(d3 )就是有多少张表 一个[0]是有多高 两个是每个表有几列 三个就是具体数
#print(d3[0][0][0])
#print(d3)
#sarray=pygame.surfarray.array3d(pygame.surface((50,50)))
sarray=pygame.surfarray.array3d(pygame.Surface((width,height)))
#sarray[:]=(255,255,0)变成黄色,替换所有为(255,255,0)
tsize=image.get_size()#图片宽高
print(tsize)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
mouse = pygame.mouse.get_pos()
'''pxarray = pygame.PixelArray(screensurf)
pixel = pygame.Color(pxarray[mouse[0], mouse[1]])#获取像素
print (pixel)
print (screensurf.get_at(mouse))#颜色
print(mouse[0], mouse[1],mouse)#点击坐标
print(img.get_at(mouse))#颜色'''
#pygame.Surface.set_at(screen, (140, 140), (img.get_at(mouse)))
print(mouse[0], mouse[1], mouse) # 点击坐标
for i in range(width):
for j in range(int(height/2),height):
x=(width/2)-i
y=j+f
z=j-(height/2)+0.01
'''
def huizhi(x, y, z):
shiju = 300
x1 = shiju * x / z
y1 = shiju * y / z
# p.append((x1,y1))
return x1, y1
'''
px=x/z*sc
py=y/z*90
'''不重复图片'''
#print(px, py)
if 0 <= px < tsize[0] and 0 <= py< tsize[1]:
#print(px, py)
fp = int(px), int(py)
#fc = d3[fp]
#sarray[-i, j] = fc
pygame.Surface.set_at(screen, (i, int(j/2)+260), (image.get_at((fp))))
#pygame.Surface.set_at(screen, (int(i * 0.5), int(j * 0.5)), (image.get_at((fp))))
#fp=int(px%tsize[0]),int(py%tsize[1])#tsize【0】,【1】是图片宽高
#pygame.surfarray.blit_array(screen,sarray)
pygame.display.update()
文章来源:https://www.toymoban.com/news/detail-638442.html
到了这里,关于pygame单图伪3d的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!