[英]PYTHON - win32gui.DrawText rect even pattern
我的應用程序非常簡單。 它僅使用win32gui.DrawText
在我的 Window 中顯示 12 個(文本)數據。 但是,我在定位文本時遇到問題,或者更准確地說是rect
s。 我的rect
總是變得不均勻,或者它們比預期的更短或更長。 但是我希望它們都是均勻的,我希望它們共享 Window 提供的空間。
我要存檔的是這個架構:
還要注意在第一個rect
中文本是如何左對齊的,而在第二個矩形中文本是如何右對齊的。 重復這個模式。
我是新手,我無法弄清楚如何讓矩形元組坐標以這種方式運行。
編輯:代碼(我刪除了不相關的代碼)
thistuple2 = (145, 160, 0, 0)
thistuple3 = (305, 60, 0, 0)
thistuple4 = (305, 160, 20, 0)
thistuple5 = (315, 60, 180, 0)
thistuple6 = (315, 160, 180, 0)
hDC, paintStruct = win32gui.BeginPaint(fenster)
dpiScale = win32ui.GetDeviceCaps(hDC, win32con.LOGPIXELSX) / 60.0
fontSize = 10
lf = win32gui.LOGFONT()
lf.lfFaceName = "Segoe UI"
lf.lfHeight = int(round(dpiScale * fontSize))
hf = win32gui.CreateFontIndirect(lf)
win32gui.SelectObject(hDC, hf)
win32gui.SetBkMode(hDC, win32con.TRANSPARENT)
win32gui.SetTextColor(hDC,win32api.RGB(255,255,255))
rect = win32gui.GetClientRect(fenster)
win32gui.DrawText(
hDC,
"VLO ",
-1,
thistuple1,
win32con.DT_SINGLELINE | win32con.DT_CENTER | win32con.DT_VCENTER | win32con.DT_RIGHT)
rect = win32gui.GetClientRect(fenster)
win32gui.DrawText(
hDC,
"DFH ",
-1,
thistuple2,
win32con.DT_SINGLELINE | win32con.DT_CENTER | win32con.DT_VCENTER)
rect = win32gui.GetClientRect(fenster)
win32gui.DrawText(
hDC,
"130242",
-1,
thistuple3,
win32con.DT_SINGLELINE | win32con.DT_CENTER | win32con.DT_VCENTER | win32con.DT_RIGHT)
rect = win32gui.GetClientRect(fenster)
win32gui.DrawText(
hDC,
"120",
-1,
thistuple4,
win32con.DT_SINGLELINE | win32con.DT_CENTER | win32con.DT_VCENTER | win32con.DT_RIGHT)
rect = win32gui.GetClientRect(fenster)
win32gui.DrawText(
hDC,
"VHN ",
-1,
thistuple5,
win32con.DT_SINGLELINE | win32con.DT_CENTER | win32con.DT_VCENTER)
rect = win32gui.GetClientRect(fenster)
win32gui.DrawText(
hDC,
"LOU ",
-1,
thistuple6,
win32con.DT_SINGLELINE | win32con.DT_CENTER | win32con.DT_VCENTER)
win32gui.EndPaint(fenster, paintStruct)
我知道這些只有 6 個項目。 我停止繪制剩余的那些,因為我對直角坐標感到頭疼。 同樣在最終產品中,文本不是 static,僅用於顯示目的。
編輯:我昨天設法通過給所有 rects 華麗的 bg 顏色並一遍又一遍地手動猜測 rect 坐標來自己存檔它,直到我設法將它們放在我想要的位置並且我也修復了 alignment。 由於我是 py 的新手,我不知道有 Qt 和它們的庫之類的東西,我將用它重做應用程序,因為它更容易動態更改 label 而不是每次在數據更改時使用 DrawText 重繪。
為了均勻,您需要Mapping Modes 和 Translations 。 通常,調用 function 序列就像這樣繪制自定義 Window 背景:
hdc = (HDC) wParam;
GetClientRect(hwnd, &rc);
SetMapMode(hdc, MM_ANISOTROPIC);
SetWindowExtEx(hdc, 100, 100, NULL);
SetViewportExtEx(hdc, rc.right, rc.bottom, NULL);
//possible SetWindowOrgEx and SetViewportOrgEx following
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.