[問題] gtk+ 改變視窗大小

看板C_and_CPP (C/C++)作者 (啤酒肚)時間15年前 (2011/06/26 01:17), 編輯推噓4(406)
留言10則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux gcc 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) gtk+ 我現在想用gtk+ 顯示一張圖, 然後改變窗口大小時 圖像大小也會隨窗口大小改變 我嘗試用 gtk_signal_connect 的 "expose-event" 與"size_request" 都不盡理想 用expose-event 會只能拉大不能拉小 用size_request 更慘 不但只能拉大不能拉小 在拉伸過程還超lag 程式碼如下: http://codepad.org/n8nLPTNz 假設程式碼檔名叫 winresize.cpp 編譯則是: g++ `pkg-config --libs --cflags gtk+-2.0` -fpermissive winresize.cpp -o winresize 解釋一下: function readBMP 用來讀bmp檔的函數 我丟進去的圖是叫 dragonAge_640x480.bmp ( 這張 http://0rz.tw/8EGNv) flag INVERSE 是指明bmp由前向後還是由後向前 這裡是後向前 176~ 186 行 標準的gtk顯示圖像做法, 圖像資料在記憶體 unsigned char *pImageData 中 flag EXPOSE_EVENT: 開啟是用 "expose-event" 事件來觸發改變圖像 沒開啟則是用"size_request" 觸發 87~161 則是寫了兩個 callback 函數ResizeImage 去對應是否 flag EXPOSE_EVENT 有無開啟 這code寫的有點亂 因為怎試都不行 0.0 還請高手釋疑 謝謝 總覺的該不難 但怎都弄不出來.. 當然最好是用size_request 來觸發比較好嚕 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.132.79 ※ 編輯: DrStein 來自: 58.115.132.79 (06/26 01:18)

06/26 10:46, , 1F
反了吧 ... size request才是設定最小大小 XD
06/26 10:46, 1F
那請問我該怎寫才對呢 還請大大幫忙給予指點 謝謝 ※ 編輯: DrStein 來自: 58.115.132.79 (06/26 14:13)

06/26 16:20, , 2F
GTK+ 的影像處理我不熟 XD 是我的話可能會考慮用 OpenGL
06/26 16:20, 2F

06/26 16:21, , 3F
來做縮放
06/26 16:21, 3F

06/26 16:24, , 4F
不過這樣缺點就是只能用 linear filter
06/26 16:24, 4F

06/26 16:25, , 5F
網路上有人做法是拖曳時用 Nearest,放開後用 Hyper
06/26 16:25, 5F
※ 編輯: DrStein 來自: 58.115.132.79 (06/26 17:03)

06/26 17:04, , 6F
現在只是先做個sandbox來試 等到真的要用時會用lib令外做
06/26 17:04, 6F

06/26 17:05, , 7F
縮放,現在主要是卡在回傳(resize)事件與重設pixbuf
06/26 17:05, 7F

06/26 17:06, , 8F
那請問能給與建義嗎 謝謝 能縮放就好了qq
06/26 17:06, 8F

06/26 22:30, , 9F
你去抓 gpicview 的 code 來看比較快
06/26 22:30, 9F

06/26 23:39, , 10F
那請用那一個事件回傳比較好呢
06/26 23:39, 10F
文章代碼(AID): #1E1XWnIy (C_and_CPP)
文章代碼(AID): #1E1XWnIy (C_and_CPP)