Я хочу смоделировать оценочное мероприятие, и я хотел бы его визуализировать.Я нашел код на С ++, который визуализирует матрицу как R, G, B, и попытался ее адаптировать.Код готовит и показывает первое растровое изображение.Однако растровое изображение не обновляется.Можно ли подготовить симуляцию по растровым изображениям?
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Ctach double-clicks */
wincl.cbSize = sizeof(WNDCLASSEX);
/* Use default icon and mousepointer */
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use lightgray as the background of the window */
wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
/* Register the window class, if fail quit the program */
if(!RegisterClassEx(&wincl)) return 0;
/* The class is registered, lets create the program*/
hwnd = CreateWindowEx(
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows Example", /* Title Text */
WS_OVERLAPPEDWINDOW, /* defaultwindow */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window end up on the screen */
10*width, /* The programs width */
10*height, /* and height in pixels */
HWND_DESKTOP, /* The window is a childwindow to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Make the window visible on the screen */
ShowWindow(hwnd, nFunsterStil);
menu = LoadMenu(hThisInstance, MAKEINTRESOURCE(ID_MENU));
SetMenu(hwnd, menu); g_ImgWidth = width*10; g_ImgHeight = height*10;
DWORD* pixelData = new DWORD[g_ImgWidth * g_ImgHeight]; // DWORD: 4 bytes, 4 for RGBA
for(time=0; time < 50; time++) {
for(l = 0; l < g_ImgHeight; l++) {
for(k = 0; k < g_ImgWidth; k++) {
BYTE component = 50 + (elevation[k/10 + 1][l/10 + 1] - surfaceElevation)*100;
elevation[k/10 + 1][l/10 + 1] -= 1.0/10.0;
pixelData[l * g_ImgWidth + k] = RGB(component, component, component); // input B, G, R
} }
g_Bitmap = ::CreateBitmap(g_ImgWidth, g_ImgHeight, 1, 32, pixelData);
delete []pixelData;
Sleep(500);
while(GetMessage(&messages, NULL, 0, 0))
{
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
} // End of time loop
Я хочу создать цикл for, в котором я манипулирую матрицей высот, снова визуализирую ее и показываю в течение полсекунды.Затем он будет обновлен и снова визуализирован.Это то, что я хочу.Если кто-то может помочь, я буду рад.