一直想知道遊戲放全螢幕是怎麼做到,現在我總算找到方法來實現!原來知道方法以後,就覺得全螢幕顯示 (Full Screen Display)沒什麼難度,因為其實就只是很簡單的想法,就可以克服先天上(系統)的限制,難是難在我們總是複雜化問題而不自知:P
上圖是我修改程式讓原本700×491的影像,不成比例放大為1680×1050的全螢幕,而原圖如下,兩圖皆可點開放大~
/**
Theme: Full Screen Display
compiler: Visual C++ 2010 with OpenCV 2.4.3
Date: 102/05/08
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
#include <opencv/highgui.h>
#include <opencv/cv.h>
#define SCREEN_W 1680
#define SCREEN_H 1050
#define BORDER 10
int main()
{
IplImage * img;
img = cvLoadImage("happyman.jpg", CV_LOAD_IMAGE_COLOR);
//Key 1: cvNamedWindow比需加設參數CV_WINDOW_NORMAL,才能設定我們需要的大小
cvNamedWindow("Happy Window", CV_WINDOW_NORMAL);
//Key 2: 設定Window屬性為全螢幕,所以就不會有最上面的Title Bar
cvSetWindowProperty("Happy Window", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
//Key 3: 視窗再變大一些
cvResizeWindow("Happy Window", SCREEN_W + BORDER, SCREEN_H + BORDER);
//Key 4: 視窗往左上角移一些
cvMoveWindow("Happy Window", -BORDER, -BORDER);
cvShowImage("Happy Window", img);
cvWaitKey(0);
return 0;
}
透過葉正聖老師的教學,讓我知道有四個關鍵,視窗特性設定好之後,還要加上放大和位移。此時,我很好奇放大和位移的量最少數值為何,就能讓視窗佔滿整個螢幕畫面?我想答案就讓我實驗出來吧~
修改這幾行code:
#define SCREEN_W 1680/3
#define SCREEN_H 1050/3
cvMoveWindow("Happy Window", 1000, 600);
意思是將視窗設定為螢幕大小的1/3,將影像塞到這樣子大的視窗,接著把視窗移動到螢幕位置(1000, 600),下圖是編譯執行後的結果,點圖可放大~
剛好今天是陳妍希創作歌曲—方向的MV發表在Youtube的時候,呵呵~
把圖放大之後你將可發現,視窗真的沒有Title Bar和Border,不過最左邊和最上邊卻有1 pixel的灰色線條,所以BORDER設定為1即可~當然若是播放Video而非Image的話,BORDER設越小越好囉~因為看不到就不要去處理,讓效能維持最佳狀態!
真是謝謝陳妍希的方向,因為真的是選擇重於努力,才讓我覺得這一切的努力都值得:)指引我方向的女神>///<
參考:葉正聖老師:教研究生學OpenCV、How to display an image in full screen borderless window in openCV。



隨意留個言吧:)~