๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ’ป Win32API

Pixel

by eazuooz 2022. 11. 9.

์˜ˆ์ œ :)

https://github.com/eazuooz/WindowAPI/commit/c5146992a87f43d612e3307fa4c52964a51027c5

 

Pixel Collision · eazuooz/WindowAPI@c514699

Show file tree Showing 4 changed files with 45 additions and 5 deletions.

github.com

 

๋น„ํŠธ๋งต(Bitmap) ๊ทธ๋ž˜ํ”ฝ

๋น„ํŠธ๋งต ๊ทธ๋ž˜ํ”ฝ์€ ๊ฐ„๋‹จํžˆ ๋งํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์ (ํ”ฝ์…€)๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ๊ทธ๋ ค์ง€๋Š” ์ด๋ฏธ์ง€ ํ‘œํ˜„ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋น„ํŠธ๋งต ์ด๋ฏธ์ง€๋Š” ์ •๊ตํ•˜๊ณ  ํ™”๋ คํ•œ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜์—ฌ, ์ฃผ๋กœ ์‚ฌ์ง„ ์ด๋ฏธ์ง€์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋น„ํŠธ๋งต ์ด๋ฏธ์ง€๋Š” ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ด๋ฉด ์›๋ณธ ์ด๋ฏธ์ง€์— ์†์ƒ์ด ๊ฐ€๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋ฉฐ, ์šฐ๋ฆฌ๋Š” ํ”ํžˆ ์ด๊ฒƒ์„ '์ด๋ฏธ์ง€๊ฐ€ ๊นจ์กŒ๋‹ค'๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

Bitmap ํŒŒ์ผ์€ ๊ฐ€๋กœ X ์„ธ๋กœ ํฌ๊ธฐ์˜ ํ”ฝ์…€๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋น„ํŠธ๋งต์˜ X, Y ์œ„์น˜์— ์žˆ๋Š” ํ”ฝ์…€์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋˜๋Š” ์ˆ˜์ • ํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ”ฝ์…€ ๊ตฌ์กฐ์ฒด

	struct Pixel
	{
		BYTE R;
		BYTE G;
		BYTE B;
		BYTE A;

		Pixel(BYTE r, BYTE g, BYTE b, BYTE a)
			: R(r), G(g), B(b), A(a)
		{

		}
	};

 

Set, Get ํ”ฝ์…€ ํ•จ์ˆ˜

	Pixel Image::GetPixel(int x, int y)
	{
		y = mHeight - (y + 1);

		Pixel* pPixel = (Pixel*)mBitmap;
		pPixel += (mWidth * y + x);
		return *pPixel;
	}

	void Image::SetPixel(int x, int y, Pixel pixel)
	{
		// ๋น„ํŠธ๋งต ์ขŒํ‘œ๋Š” ์ขŒ์ธก ์ƒ๋‹จ์ด 0,0 ์ด๊ธฐย‹ยš๋ฌธ์— ์œˆ๋„์šฐ ์ขŒํ‘œ์—์„œ
		// ์‚ฌ์šฉํ•˜๋ ค๋ฉด y๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋ฐ”๊พธ์–ด์ฃผ์–ดh๋‹ค.
		y = mHeight - (y + 1);

		Pixel* pPixel = (Pixel*)mBitmap;
		pPixel += (mWidth * y + x);
		*pPixel = pixel;
	}

'๐Ÿ“ Development Study > ๐Ÿ’ป Win32API' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Sound  (0) 2022.11.09
Gravity  (0) 2022.11.09
UIManager, UIBase  (0) 2022.11.09
Tile Map  (0) 2022.11.02
Clone Object(๋ณต์‚ฌ ์ƒ์„ฑ์ž)  (0) 2022.10.26

๋Œ“๊ธ€