Я пытаюсь отобразить картинку в окне без полей. Я установил параметры окна, как показано в коде, используя HWND.
Это работает для меньшего изображения, то есть изображений, меньших, чем разрешение моего монитора. Ниже вы можете видеть, что изображение отображается в абсолютно безбаховом окне:
Но когда я пытаюсь загрузить изображение с разрешением моего монитора, в нижней части моего окна отображается серая полоса, как показано красными стрелками:
Как убрать эту полосу? Мой код выглядит следующим образом:
#include "stdafx.h"
#include "includes.h"
using namespace cv;
/********************* PRESETS **************************/
/*configBorderlessWindow : This Function configures the opencv image display
window to
borderless using windows system functions*/
HWND win_handle;
void configBorderlessWindow( IplImage* cv_img )
{
cvNamedWindow("TEST");
cvMoveWindow("TEST", 0, 0);
cvShowImage("TEST", cv_img);
win_handle = FindWindow(0, L"TEST");
if (!win_handle) { printf("Failed FindWindow\n"); }
/* Setting the flags for the borderless window */
unsigned int flags = (SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE );
flags &= ~SWP_NOSIZE;
unsigned int x = 0;
unsigned int y = 0;
unsigned int w = cv_img->width;
unsigned int h = cv_img->height;
SetWindowPos(win_handle, HWND_TOPMOST, x, y, w, h, flags);
SetWindowLong(win_handle, GWL_STYLE, GetWindowLong(win_handle, GWL_EXSTYLE) | WS_EX_TOPMOST);
ShowWindow(win_handle, SW_SHOW);
//ShowWindow(win_handle, SW_MAXIMIZE); // Maximize window AK 04012019
SetActiveWindow( win_handle );
HWND setFocusHandle = SetFocus(win_handle);
//ShowCursor( FALSE );
}
int main()
{
IplImage* cv_img= cvLoadImage("android_189017-640x480.jpg");
printf("Success");
configBorderlessWindow(cv_img );
waitKey(0);
}