用python画三维图、某区域的高程,python - 在PyQt中绘制具有高程和降低效果的3D矩形/多边形 - SO中文参考 - www.soinside.com...

据我所知,没有内置的PyQt 3D绘制小部件/功能,因为您只能绘制2D多边形。但我们可以创建一个自定义类来模拟3D绘画。从您的Java链接reference:

Java支持3D矩形,但第三维的效果不是很明显。由于海拔较低,效果可以忽略不计。 Java设计师通过沿矩形边框绘制更亮和更暗的线条来实现3D效果。

我们可以模拟Java的3D绘图功能的效果:

void fill3DRect(int x, int y, int width, int height, boolean raised)

此方法使用上面指定的参数绘制实心3D矩形。最后一个布尔参数true表示高于绘图表面的高程,false表示蚀刻到表面。

为了在Python中获得3D效果,我们基本上可以通过使用两种颜色的颜色然后变暗并照亮某些边来做同样的事情。

eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8yUElzci5wbmcifQ==

from PyQt5 import QtCore, QtGui, QtWidgets

import sys

class Rectangle3D(QtWidgets.QWidget):

def __init__(self, parent=None):

QtWidgets.QWidget.__init__(self, parent)

# Elevated 3D rectangle color settings

self.elevated_border_color = QtGui.QColor(111,211,111)

self.elevated_fill_color = QtGui.QColor(0,255,0)

self.elevated_pen_width = 2.5

# Lowered 3D rectangle color settings

self.lowered_border_color = QtGui.QColor(0,235,0)

self.lowered_fill_color = QtGui.QColor(0,178,0)

self.lowered_pen_width = 2.5

def draw3DRectangle(self, x, y, w, h, raised=True):

# Specify the border/fill colors depending on raised or lowered

if raised:

# Line color (border)

self.pen = QtGui.QPen(self.elevated_border_color, self.elevated_pen_width)

# Fill color

self.fill = QtGui.QBrush(self.elevated_fill_color)

else:

# Line color (border)

self.pen = QtGui.QPen(self.lowered_border_color, self.lowered_pen_width)

# Fill color

self.fill = QtGui.QBrush(self.lowered_fill_color)

painter = QtGui.QPainter(self)

# Draw border color of rectangle

painter.setPen(self.pen)

painter.setBrush(self.fill)

painter.drawRect(x, y, w, h)

# Cover up the top and left sides with filled color using lines

if raised:

painter.setPen(QtGui.QPen(self.elevated_fill_color, self.elevated_pen_width))

else:

painter.setPen(QtGui.QPen(self.lowered_fill_color, self.lowered_pen_width))

painter.drawLine(x, y, x + w, y)

painter.drawLine(x, y, x, y + h)

def paintEvent(self, event):

self.draw3DRectangle(50,50,300,150,True)

self.draw3DRectangle(50,250,300,150,False)

if __name__ == '__main__':

app = QtWidgets.QApplication(sys.argv)

widget = Rectangle3D()

widget.show()

sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年PMP考试新考纲-PMBOK第七版-项目管理原则真题解析(续3)

马上就要进入2024年了,要参加2024年PMP一季度考试的小伙伴可以准备起来了。2024年的PMP考试将继续采用新考试大纲,考试内容包括PMBOK第六版、PMBOK第七版和敏捷实践指南,而且敏捷(或者叫混合)的项目环境将占比超过50%&…

linux 串口信息记到日志,[linux学习笔记]之一:ubuntu ch340调试备忘

[linux学习笔记]之一:ubuntu ch340调试备忘已有 2183 次阅读2016-11-8 21:52|个人分类:linux最近迷上了Linux,入了一块板。电脑使用win7ubuntu 双系统,可是调试的时候就麻烦了,ubuntu下写好sd卡镜像,调试的时候还要切换…

嵌入式linux 配置usb otg,嵌入式linux系统环境下USB设备的驱动实现

0 引言嵌入式linux系统环境以其易于移植裁减、内核小、效率高、完整、原代码开放及性能优异等特点,在嵌入式领域得到了非常广泛的应用。Linux的USB设备端的源代码中主要有USB device的海量存储设备、串口设备、网络设备等设备驱动程序及各种USB device控制器芯片的…

linux 上下文切换监控,[Linux] 查看进程的上下文切换pidstat

各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。进程是由内核管理和调度的,所以进程的切换只能发生在内核态…

linux怎么休眠快捷键,在Deepin系统中创建右键休眠选项的方法

本文介绍在深度Deepin操作系统中创建右键休眠选项,以方便你更快的进入到系统休眠当中,实现方法非常简单,按照下面的步骤进行就可以了。休眠的好处系统休眠,可以让平时的工作环境保存到硬盘中,以便开机后便可立即进入工…

android 自定义推流器,Android直播实现 Android端推流、播放

最近想实现一个Android直播,但是对于这方面的资料都比较零碎,一开始是打算用ffmpeg来实现编码推流,在搜集资料期间,找到了几个强大的开源库,直接避免了jni的代码,集成后只用少量的java代码就可实现编码、推…

android 聊天功能实现,Android聊天背景功能实现

解决输入法弹出时背景被顶上去或者挤压变形的问题先看效果图:Screenshot_1510219375.pngScreenshot_1510219378.png实现方案:package com.qiangqiang.chatback.views;import android.content.Context;import android.util.AttributeSet;import android.v…

小技巧来助阵 玩转Google Chrome(谷歌浏览器)

核心提示:Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。 Chrome问世已经有段时间了,相关的应用技巧也开始被挖掘出来,这里小编教你3则小技巧,让Chrome更满足你的需求。 1、单进程运行:Chrome的多…

谷歌浏览器怎么下载视频 Google Chrome下载视频方法

核心提示:现在我来教大家谷歌浏览器怎么下载视频 Google Chrome下载视频方法。 谷歌浏览器怎么下载视频 Google Chrome下载视频方法 我们经常会在线看一些网页视频,但是网站的视频下载都只支持自己的客户端,如果每家网站的客户端都安装的话那…

android 日程安排view,RecyclerView 列表控件中简单实现时间线

时间时间,时间,时间啊;走慢一点吧~看见很多软件中都有时间线的东西,貌似天气啊,旅游啊什么的最多了;具体实现方式很多,在本篇文章中讲解一种自定义View封装的方式。效果先来看看效果…

android rxjava2 简书,RXJava2学习

什么是RxJava一个可观测的序列来组成异步的、基于事件的程序的库。(简单来说:它就是一个实现异步操作的库)RxJava 好在哪?RxJava 其实就是提供一套异步编程的 API,这套 API 是基于观察者模式的,而且是链式调用的,所以使用 RxJava…

无尽包围html5游戏在线玩,小团体激发潜能小游戏突破自我

缩小包围圈游戏其实是一个不可能完成的任务,但是它会给游戏者带来无尽欢笑,使小组充满活力,让队员们能够自然地进行身体接触和配合,消除害羞和忸怩感,创造融洽的气氛,为后续工作的开展奠定良好基础。可以作…

html5鼠标下拉浮窗固定,【前端技术】vue-floating-menu可拖拽吸附的浮窗菜单

前言正如这个名字,这是一个具有拖拽吸附功能的浮窗菜单,开源项目一个基于 vue 的浮窗组件,可在屏幕内自由拖拽,拖拽后可以根据最后的位置吸附到页面两边,而且可以点击浮窗显示菜单效果如下:遇到的问题总结鼠标移动过快&#xff0c…

html vba 单元格 格式,VBA设置单元格格式之——字体

009 设置单元格格式之字体(文档下载:关注本公众号,发送消息【教程】即可获得)通过VBA对单元格字体进行设置也是比较常用的方式,那么本节内容我们就来学习如何使用VBA对单元格中的字体进行设置。如图所示,字体设置主要有&#xff0…

2021聊城二中高考成绩查询,聊城中考成绩查询时间2021

聊城市2021年中考查分时间大约是6月27日。各普通高中要于7月10日前在校内张榜公布录取考生名单,并签发录取通知书。聊城中考录取时间各普通高中要于7月10日前在校内张榜公布录取考生名单,并签发录取通知书。所有学校均不得违规招收已被其他学校录取的考生…

桂林电子科技大学计算机信息管理专业排名,桂林电子科技大学信息科技学院优势专业排名,2021年桂林电子科技大学信息科技学院最好的专业排名...

桂林电子科技大学优势专业由桂林电子科技大学历届学长学姐实名推荐:1、通信工程 推荐指数: 4.8(156人推荐)2、电子信息工程 推荐指数: 4.6(135人推荐)3、机械设计制造及其自动化 推荐指数: 4.6(114人推荐)4、电气工程及其自动化 推荐指数: 4.5(93人推荐)5、测控技术…

计算机网络五层模型以及数据单元,计算机网络OSI模型、TCP/IP模型与5G协议

一、 OSI参考模型国际标准化组织(ISO)在1984年颁布了开放系统互连参考模型(OSI),这是一个开放式的体系结构,将网络分为了七层。这七层分别是应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。1.1 七层模型的功能分层功能应用层网络服务与最…

台式机计算机怎么分割,编辑手把手教程 如何给电脑硬盘分区

1找到磁盘管理工具目前主流的电脑,都预装了正版Win7操作系统,相信就算没有安装系统,朋友们在买到新电脑后的第一件事就是安装Windows操作系统。虽然Win8操作系统即将面世,但Win7操作系统的市场占有率已跟经典的Windows XP操作系统…

银行柜员网申计算机水平要求高吗,银行网申没通过,是因为你水平差吗?

原标题:银行网申没通过,是因为你水平差吗?近段时间,各进银行陆续开设网申通道,各位憧憬进入到银行工作的学员也在紧张的网申材料准备中。根据往年的经验来看,会有学员对小编吐槽“同学都收到网申通过的通知…

辽宁沈阳计算机学校王斯琪,青春正好,理所当“燃”——沈阳万合技校开展2020-2021年度春季学期跳大绳比赛...

原标题:青春正好,理所当“燃”——沈阳万合技校开展2020-2021年度春季学期跳大绳比赛辽宁万合职业教育集团Liaoning Wanhe Vocational Education Group沈阳万合职业技术学校Shenyang Wanhe vocational and technical school跳跃奔跑的身影,爽…