好。我一直在玩windows.h几个小时,因为我有一个需要一些图形输出的小项目。我看过关于某些数学主题的YouTube视频我感兴趣,所以我自己做了(至少是其中的一部分)。所以问题是:
windows.h中是否有可以设置像素大小的函数?我希望有一个像素化图像,因为如果我正确看到它,我的输出看起来会更好。
这是我的代码,如果你想看到它,还有一些关于项目的截图。 (图片:https://1drv.ms/f/s!AvMH4xlC_LqCmyAvmyOWUsIqFHAV)
#include <iostream>
#include <fstream>
/// ezek kellenek a grafikához!
#define _WIN32_WINNT 0x0500
#include<windows.h>
#include <cmath>
#define N 1000
#define S 2000000
#define gridMAX 4
using namespace std;
void toeple(int** grid);
int main()
{
int **grid = new int*[N];
for(int i=0;i<N;i++){
grid[i] = new int[N];
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
grid[i][j] = 0;
}
}
grid[N/2][N/2] = S;
toeple(grid);
ofstream fout("grid.txt");
fout << N-2 << endl;
for(int i=1;i<N-1;i++){
for(int j=1;j<N-1;j++){
fout << grid[i][j] << " ";
}
fout << endl;
}
fout.close();
for(int i=0;i<N;i++){
delete [] grid[i];
}
delete [] grid;
ifstream fin("grid.txt");
int meret;
fin >> meret;
int **newgrid = new int*[meret];
for(int i=0;i<meret;i++){
newgrid[i] = new int[meret];
}
string sor;
while(!fin.eof()){
for(int i=0;i<meret;i++){
for(int j=0;j<meret;j++){
fin >> newgrid[i][j];
}
}
}
fin.close();
/// most rajzolunk!
HWND myconsole = GetConsoleWindow();
HDC mydc = GetDC(myconsole);
COLORREF black = RGB(0,0,0), red = RGB(255,0,0), green = RGB(0,255,0), blue = RGB(0,0,255) , zero = RGB(229, 255, 0);
for(int i=0;i<meret;i++){
for(int j=0;j<meret;j++){
if(newgrid[i][j] == 0){
SetPixel(mydc, 10+i,10+j, zero);
}else if(newgrid[i][j] == 1){
SetPixel(mydc, 10+i,10+j, red);
}else if(newgrid[i][j] == 2){
SetPixel(mydc, 10+i,10+j, green);
}else if(newgrid[i][j] == 3){
SetPixel(mydc, 10+i,10+j, blue);
}else{
SetPixel(mydc,10+i,10+j, black);
}
}
}
ReleaseDC(myconsole, mydc);
cin.ignore();
for(int i=0;i<N;i++){
delete [] newgrid[i];
}
delete [] newgrid;
return 0;
}
void toeple(int** grid){
bool ready = false;
do{
ready = true;
for(int i=1;i<N-1;i++){
for(int j=1;j<N-1;j++){
if(grid[i][j]>=gridMAX){
ready = false;
while(grid[i][j]>=gridMAX){
grid[i+1][j]++;
grid[i-1][j]++;
grid[i][j+1]++;
grid[i][j-1]++;
grid[i][j]-=gridMAX;
}
}
}
}
}while(!ready);
}
答案 0 :(得分:-1)
您可以使用SetWorldTransform,SetMapMode和相关功能更改GDI坐标系。
Coordinate Spaces and Transformations
这些年来我用它来实现放大\缩小功能。
P.S。另外,如果使用SetPixelV而不是SetPixel,则可能会看到速度小幅提升。