|
@@ -1,5 +1,6 @@
|
|
|
import sys
|
|
|
import numpy as np
|
|
|
+from PyQt5.QtGui import QColor, QFont
|
|
|
from PyQt5.QtWidgets import QApplication, QOpenGLWidget, QVBoxLayout, QWidget
|
|
|
from PyQt5.QtCore import Qt, pyqtSignal
|
|
|
from OpenGL.GL import *
|
|
@@ -41,6 +42,8 @@ class Simple3DWidget(QOpenGLWidget):
|
|
|
self.picking = False # 是否处于拾取模式
|
|
|
self.picking_color_map = {} # 顶点索引 → 唯一颜色(用于反查)
|
|
|
|
|
|
+ self.setFont(QFont("SimHei", 10)) # 让 renderText 使用黑体
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -131,13 +134,22 @@ class Simple3DWidget(QOpenGLWidget):
|
|
|
for i, v in enumerate(self.vertices):
|
|
|
# 判断是否是选中点
|
|
|
if self.selected_point is not None and np.allclose(v, self.selected_point, atol=1e-6):
|
|
|
- glColor3f(1.0, 0.0, 0.0) # 红色高亮
|
|
|
+ glColor3f(1.0, 1.0, 0.0) # 黄色高亮
|
|
|
else:
|
|
|
glColor3f(*self.colors[i]) # 原始颜色
|
|
|
glVertex3f(v[0], v[1], v[2])
|
|
|
finally:
|
|
|
glEnd() # ✅ 保证执行
|
|
|
|
|
|
+ # ✅ 在 glEnd() 之后再绘制文字!
|
|
|
+ if self.selected_point is not None:
|
|
|
+ x, y, z = self.selected_point
|
|
|
+ offset = 0.05
|
|
|
+ # 设置文字颜色
|
|
|
+ glColor3f(1.0, 1.0, 0.0) # 黄色
|
|
|
+ self.renderText(x + offset, y + offset, z + offset, "Selected")
|
|
|
+
|
|
|
+
|
|
|
elif self.display_mode == 'surface' and len(self.triangles) > 0:
|
|
|
# ✅ 开启光照
|
|
|
glEnable(GL_LIGHTING)
|