<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>いちばんやさしいゲームの作り方 &#187; Study::Bitmap</title>
	<atom:link href="http://www.game-create.com/archives/tag/studybitmap/feed" rel="self" type="application/rss+xml" />
	<link>http://www.game-create.com</link>
	<description>文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ</description>
	<lastBuildDate>Tue, 08 Jun 2010 01:28:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Study::Bitmap で透過色を指定する</title>
		<link>http://www.game-create.com/archives/886</link>
		<comments>http://www.game-create.com/archives/886#comments</comments>
		<pubDate>Fri, 24 Oct 2008 05:34:12 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[GDI]]></category>
		<category><![CDATA[Study::Bitmap]]></category>
		<category><![CDATA[デバイスコンテキスト]]></category>
		<category><![CDATA[ラスターイメージ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=886</guid>
		<description><![CDATA[Study::Bitmap で透過色を指定するためには Study::Bitmap::load() メソッドの第３引数に色情報を渡します。

たとえば赤を透過色にしたい場合は次のように書きます。
Study::Bitma [...]]]></description>
			<content:encoded><![CDATA[<p>Study::Bitmap で透過色を指定するためには Study::Bitmap::load() メソッドの第３引数に色情報を渡します。</p>
<p><span id="more-886"></span></p>
<p>たとえば赤を透過色にしたい場合は次のように書きます。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">Study</span><span class="hl-default">::</span><span class="hl-identifier">Bitmap graphics</span><span class="hl-default">;
</span><span class="hl-identifier">graphics</span><span class="hl-default">.</span><span class="hl-identifier">load</span><span class="hl-brackets">(</span><span class="hl-identifier">hdc</span><span class="hl-code">, </span><span class="hl-identifier">TEXT</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">graphics.bmp</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-identifier">RGB</span><span class="hl-brackets">(</span><span class="hl-number">255</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-brackets">))</span><span class="hl-default">; </span><span class="hl-comment">// RGB の順で輝度を指定する</span></pre></div></div>
<p>この指定によって自動的にマスク画像が作られるようになります。マスク画像のデバイスコンテキストハンドルは Study::Bitmap::getMask() メソッドによって取得できます。</p>
<p>これで Study::Bitmap::load() 時にデバイスコンテキストハンドルを渡さなくても済むようになればいいのですが、今のところ良い方法が思いつきません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/886/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Study::Bitmap でマスク画像を取得する</title>
		<link>http://www.game-create.com/archives/779</link>
		<comments>http://www.game-create.com/archives/779#comments</comments>
		<pubDate>Mon, 29 Sep 2008 14:58:26 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Study::Bitmap]]></category>
		<category><![CDATA[ラスターイメージ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=779</guid>
		<description><![CDATA[Study::Bitmap でマスク画像を取得するためには Study::Bitmap::getMask() メソッドを使います。

ラスターイメージを透過転送するためにはマスク画像が必要ですが、 Study::Bitm [...]]]></description>
			<content:encoded><![CDATA[<p>Study::Bitmap でマスク画像を取得するためには Study::Bitmap::getMask() メソッドを使います。</p>
<p><span id="more-779"></span></p>
<p><a href="http://www.game-create.com/archives/735">ラスターイメージを透過転送する</a>ためにはマスク画像が必要ですが、 Study::Bitmap を使うとビットマップ画像からマスク画像を自動的に作ることができます。やり方は簡単、次のように読み込んで Study::Bitmap::getMask() メソッドを呼ぶだけです。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">Study</span><span class="hl-default">::</span><span class="hl-identifier">Bitmap player</span><span class="hl-default">;

</span><span class="hl-comment">// hBackBuffer と互換性のあるビットマップイメージを player.bmp から作る
// このとき緑色 (255, 0, 255) を背景色とする
</span><span class="hl-identifier">player</span><span class="hl-default">.</span><span class="hl-identifier">load</span><span class="hl-brackets">(</span><span class="hl-identifier">hBackBuffer</span><span class="hl-code">, </span><span class="hl-identifier">TEXT</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">player.bmp</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-identifier">RGB</span><span class="hl-brackets">(</span><span class="hl-number">255</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">255</span><span class="hl-brackets">))</span><span class="hl-default">;

</span><span class="hl-comment">// ビットマップイメージのデバイスコンテキストハンドルを取得する
</span><span class="hl-identifier">HDC bitmap</span><span class="hl-default"> = </span><span class="hl-identifier">player</span><span class="hl-default">.</span><span class="hl-identifier">getBitmap</span><span class="hl-brackets">()</span><span class="hl-default">; </span><span class="hl-comment">// player.bmp を取得する
</span><span class="hl-identifier">HDC mask</span><span class="hl-default">   = </span><span class="hl-identifier">player</span><span class="hl-default">.</span><span class="hl-identifier">getMask</span><span class="hl-brackets">()</span><span class="hl-default">;   </span><span class="hl-comment">// player.bmp のマスク画像を取得する

// player のイメージを hBackBuffer へ透過転送する
</span><span class="hl-identifier">BitBlt</span><span class="hl-brackets">(</span><span class="hl-identifier">hBackBuffer</span><span class="hl-code">, </span><span class="hl-identifier">x</span><span class="hl-code">, </span><span class="hl-identifier">y</span><span class="hl-code">, </span><span class="hl-identifier">width</span><span class="hl-code">, </span><span class="hl-identifier">height</span><span class="hl-code">, </span><span class="hl-identifier">mask</span><span class="hl-code">, </span><span class="hl-identifier">u</span><span class="hl-code">, </span><span class="hl-identifier">v</span><span class="hl-code">, </span><span class="hl-identifier">SRCAND</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-identifier">BitBlt</span><span class="hl-brackets">(</span><span class="hl-identifier">hBackBuffer</span><span class="hl-code">, </span><span class="hl-identifier">x</span><span class="hl-code">, </span><span class="hl-identifier">y</span><span class="hl-code">, </span><span class="hl-identifier">width</span><span class="hl-code">, </span><span class="hl-identifier">height</span><span class="hl-code">, </span><span class="hl-identifier">bitmap</span><span class="hl-code">, </span><span class="hl-identifier">u</span><span class="hl-code">, </span><span class="hl-identifier">v</span><span class="hl-code">, </span><span class="hl-identifier">SRCPAINT</span><span class="hl-brackets">)</span><span class="hl-default">;</span></pre></div></div>
<p>マスク画像を自分で作るよりだいぶ楽ですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/779/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>背景色を透過して画像をブロック転送する</title>
		<link>http://www.game-create.com/archives/735</link>
		<comments>http://www.game-create.com/archives/735#comments</comments>
		<pubDate>Sat, 20 Sep 2008 09:40:47 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[GDI]]></category>
		<category><![CDATA[Study::Bitmap]]></category>
		<category><![CDATA[ラスターイメージ]]></category>
		<category><![CDATA[ラスターオペレーション]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=735</guid>
		<description><![CDATA[背景色を透過して画像をブロック転送するためには、ラスターオペレーションを使います。

まず、普通に画像をブロック転送すると次のようになります。

背景色であるピンク色までもがコピーされているのがわかります。これは多くの場 [...]]]></description>
			<content:encoded><![CDATA[<p>背景色を透過して画像をブロック転送するためには、ラスターオペレーションを使います。</p>
<p><span id="more-735"></span></p>
<p>まず、普通に画像をブロック転送すると次のようになります。</p>
<p><img src="http://www.game-create.com/wp-content/uploads/2008/09/normal_blt.gif" alt="" title="通常のブロック転送" width="192" height="64" class="alignnone size-full wp-image-736" /></p>
<p>背景色であるピンク色までもがコピーされているのがわかります。これは多くの場合、意図した結果ではないはずです。背景色のピンクを除外してコピーするためには次の手順を踏みます。</p>
<p>まず、背景を白、本体を黒とする画像を作ります。これをマスク画像と呼びます。マスク画像が用意できたらラスターオペレーションを使って背景へ AND 転送し、本体の形に背景をくりぬきます。 AND 転送すると黒に近い色が採用されます。この特性を利用して本体の形に穴を開けるというわけです。</p>
<p><img src="http://www.game-create.com/wp-content/uploads/2008/09/trans_blt_1.gif" alt="" title="背景色を透過するための手順１" width="192" height="64" class="alignnone size-full wp-image-737" /></p>
<p>背景がくりぬけたら、今度は、そのくりぬいた穴に本体を流し込みます。くりぬいた穴に本体を流し込むためには、背景を黒とする画像と背景とを OR 転送します。 OR 転送すると双方の黒ではない色が採用されます。</p>
<p><img src="http://www.game-create.com/wp-content/uploads/2008/09/trans_blt_2.gif" alt="" title="背景色を透過するための手順２" width="192" height="64" class="alignnone size-full wp-image-738" /></p>
<p>見事、目的を達成することができました。</p>
<p>なお、 Study::Bitmap ではこのマスク画像を自動的に生成する機能があります。便利ですね。今後も使っていきましょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/735/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>トラブルチョコレートだぁぁぁ！！</title>
		<link>http://www.game-create.com/archives/385</link>
		<comments>http://www.game-create.com/archives/385#comments</comments>
		<pubDate>Sat, 07 Jun 2008 11:21:49 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[日記]]></category>
		<category><![CDATA[EDGE]]></category>
		<category><![CDATA[Study::Bitmap]]></category>
		<category><![CDATA[メルマガ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=385</guid>
		<description><![CDATA[メルマガを配信しなければいけない時間なのにッ！

パソコンが熱暴走でご臨終で、 EDGE2 がハードウェア変更でキーが無効になって、バレーボール日本が第１セット取られました。思い返すと今日は占いで牡羊座が最下位だったんで [...]]]></description>
			<content:encoded><![CDATA[<p>メルマガを配信しなければいけない時間なのにッ！</p>
<p><span id="more-385"></span></p>
<p>パソコンが熱暴走でご臨終で、 EDGE2 がハードウェア変更でキーが無効になって、バレーボール日本が第１セット取られました。思い返すと今日は占いで牡羊座が最下位だったんですよね。占いって当たる時あるんだなぁ…</p>
<p>でも Study::Bitmap を大幅にバージョンアップすることができました。興味のある方はダウンロードしてみてください。自動的にマスク画像が作れるようになっています。</p>
<p>パソコンの冷却ジェル買ってきました。今から作業再開します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/385/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Study::Bitmap で後からビットマップを読み込めるようになりました</title>
		<link>http://www.game-create.com/archives/361</link>
		<comments>http://www.game-create.com/archives/361#comments</comments>
		<pubDate>Sun, 18 May 2008 09:20:53 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[BMP]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Study::Bitmap]]></category>
		<category><![CDATA[Win32API]]></category>
		<category><![CDATA[デバイスコンテキスト]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=361</guid>
		<description><![CDATA[メルマガで勉強目的にご利用いただいている Study::Bitmap ですが、初期化のタイミングで互換デバイスコンテキストや読み込むファイルが決定している必要があり、使い勝手に難がありました。そこで、ビットマップを初期化 [...]]]></description>
			<content:encoded><![CDATA[<p>メルマガで勉強目的にご利用いただいている Study::Bitmap ですが、初期化のタイミングで互換デバイスコンテキストや読み込むファイルが決定している必要があり、使い勝手に難がありました。そこで、ビットマップを初期化の後に読み込めるように改造してみました。</p>
<p><span id="more-361"></span></p>
<p>後からビットマップを読み込むためには Study::Bitmap::load() というメソッドを使います。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-comment">// 初期化（引数がいりません）
</span><span class="hl-identifier">Study</span><span class="hl-default">::</span><span class="hl-identifier">Bitmap player</span><span class="hl-default">;

</span><span class="hl-mlcomment">/* 中略 */

</span><span class="hl-comment">// どこかのタイミングで読み込みます
</span><span class="hl-identifier">player</span><span class="hl-default">.</span><span class="hl-identifier">load</span><span class="hl-brackets">(</span><span class="hl-identifier">hdc</span><span class="hl-code">, </span><span class="hl-identifier">TEXT</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">player.bmp</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-default">;

</span><span class="hl-mlcomment">/* 中略 */

</span><span class="hl-comment">// またどこかのタイミングで使います
</span><span class="hl-identifier">BitBlt</span><span class="hl-brackets">(</span><span class="hl-identifier">destination</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">640</span><span class="hl-code">, </span><span class="hl-number">480</span><span class="hl-code">, </span><span class="hl-identifier">player</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">SRCCOPY</span><span class="hl-brackets">)</span><span class="hl-default">;</span></pre></div></div>
<p>しかしながら、 Windows の API が NULL 許容であることに依存しまくった改造です。勉強目的と割り切るしかありません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/361/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>メルマガ用「地球防衛ゲーム」サンプル 2008/05/17 版</title>
		<link>http://www.game-create.com/archives/360</link>
		<comments>http://www.game-create.com/archives/360#comments</comments>
		<pubDate>Sat, 17 May 2008 09:47:37 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Study::Bitmap]]></category>
		<category><![CDATA[Win32API]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[メルマガ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=360</guid>
		<description><![CDATA[メルマガで制作中の「地球防衛ゲーム」のサンプルです。

まるで幼稚園生が描いたかのような稚拙な背景が表示されます。
また、 Study::Bitmap がバージョンアップしておりますので、動作確認にもってこいのサンプルと [...]]]></description>
			<content:encoded><![CDATA[<p>メルマガで制作中の「地球防衛ゲーム」のサンプルです。</p>
<p><span id="more-360"></span></p>
<p>まるで幼稚園生が描いたかのような稚拙な背景が表示されます。</p>
<p>また、 Study::Bitmap がバージョンアップしておりますので、動作確認にもってこいのサンプルとなっております。</p>
<ul>
<li><a href="http://www.game-create.com/wp-content/uploads/manuals/articles/samples/Win32API_Sample_0011/Win32API_Sample_0011_20080517.lzh">「地球防衛ゲーム」サンプル</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/360/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDI 関数に NULL を渡してもプログラムが続行する</title>
		<link>http://www.game-create.com/archives/353</link>
		<comments>http://www.game-create.com/archives/353#comments</comments>
		<pubDate>Sat, 10 May 2008 07:47:19 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[GDI]]></category>
		<category><![CDATA[null]]></category>
		<category><![CDATA[Study::Bitmap]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=353</guid>
		<description><![CDATA[そんな馬鹿な…

Study::Bitmap が引数なしコンストラクタを持っていないので使い勝手が悪いなぁと思い、未初期化の状態というの許そうと思っているのですが、受け側の GDI 関数が NULL 許容だと絵が表示され [...]]]></description>
			<content:encoded><![CDATA[<p>そんな馬鹿な…</p>
<p><span id="more-353"></span></p>
<p>Study::Bitmap が引数なしコンストラクタを持っていないので使い勝手が悪いなぁと思い、未初期化の状態というの許そうと思っているのですが、受け側の GDI 関数が NULL 許容だと絵が表示されない原因がわかりませんよね。</p>
<p>まだメルマガで例外は扱いたくないです。デザインパターンもポインタもまだ先に延ばしてます。うむむ…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/353/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Study::Bitmap の使い方</title>
		<link>http://www.game-create.com/archives/344</link>
		<comments>http://www.game-create.com/archives/344#comments</comments>
		<pubDate>Fri, 02 May 2008 06:03:46 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[BMP]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[GDI]]></category>
		<category><![CDATA[Study::Bitmap]]></category>
		<category><![CDATA[Win32API]]></category>
		<category><![CDATA[デバイスコンテキスト]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=344</guid>
		<description><![CDATA[ビットマップを扱うためにメルマガで配布いたしました Study::Bitmap の使い方を説明します。

Study::Bitmap は BMP 形式のファイルをメモリ内に読み込んで、そのビットマップのデバイスコンテキス [...]]]></description>
			<content:encoded><![CDATA[<p>ビットマップを扱うためにメルマガで配布いたしました Study::Bitmap の使い方を説明します。</p>
<p><span id="more-344"></span></p>
<p>Study::Bitmap は BMP 形式のファイルをメモリ内に読み込んで、そのビットマップのデバイスコンテキストへアクセスする手段を提供してくれます。</p>
<p>Study::Bitmap を使うためには次の情報が必要になります。</p>
<ol>
<li>読み込んだビットマップの表示先となるデバイスコンテキストのハンドル</li>
<li>読み込みたいビットマップファイルの名前</li>
</ol>
<p>たとえば hWindow というハンドルが指すデバイスコンテキストに対して player.bmp という画像ファイルを表示させたい場合の Study::Bitmap 変数を作るためには次のように書きます。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre><span class="hl-identifier">Study</span><span class="hl-default">::</span><span class="hl-identifier">Bitmap player</span><span class="hl-brackets">(</span><span class="hl-identifier">hWindow</span><span class="hl-code">, </span><span class="hl-identifier">TEXT</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">player.bmp</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-default">;</span></pre></div></div>
<p>ここで生成した player という変数は BitBlt() 等の GDI 関数のデバイスコンテキストハンドルとして渡すことが可能になります。先の例では hWindows というハンドルが指すデバイスコンテキストへ player.bmp という画像ファイルを表示させることが目的でしたが、これを実現するためには次のように書きます。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre><span class="hl-identifier">BitBlt</span><span class="hl-brackets">(</span><span class="hl-identifier">hWindow</span><span class="hl-code">, </span><span class="hl-identifier">posX</span><span class="hl-code">, </span><span class="hl-identifier">posY</span><span class="hl-code">, </span><span class="hl-identifier">width</span><span class="hl-code">, </span><span class="hl-identifier">height</span><span class="hl-code">, </span><span class="hl-identifier">player</span><span class="hl-code">, </span><span class="hl-identifier">srcX</span><span class="hl-code">, </span><span class="hl-identifier">srcY</span><span class="hl-code">, </span><span class="hl-identifier">SRCCOPY</span><span class="hl-brackets">)</span><span class="hl-default">;</span></pre></div></div>
<p>ちなみに Study::Bitmap は、その名が示すとおり、ビットマップを扱うための手順を学ぶための型であり、実用性は全く考慮されておりません。もし、ビットマップファイルを扱う手順を忘れてしまった場合は Study::Bitmap のソースコードを開いて確認することができます。</p>
<p>一番の理想は、この型から脱却して別のライブラリを使えるだけの実力を身につけることなのですが、まぁ、まずは一緒にこれを使っていきましょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/344/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

