« 月・金星・火星の共演 | トップページ | 月相のマスク方法【2】 »

月相のマスク方法【1】

現在、開発中のPlanet Mate version 3.00とCalend Mate version 3.00では、月相として満月画像を用いて満ち欠けを表示するようにしました。

準備

Visual Basic 6 (VB6) の場合、Formに3つのPicture Box (Picture1~Picture3) を用意します。Picture1 (左) は月相表示用、Picture2 (真中) は背景を透過にした満月のGif画像、Picture3 (右) は月相マスク描画用となっています。すべてのPicture BoxのScaleModeプロパティはvbPixels (=3)、Picture2とPicture3のVisibleプロパティはFalse (非表示) にします。

Picture Box

満月の画像は2015年9月28日のスーパームーンのときに撮影したものを使用しました。

通常の方法

通常行われている画像マスク方法での手順で作成してみました。まずは、Picture1とPicture2の背景色を設定し、Picture3に背景色を黒色にした月相を白色で描きます。Planet Mateでは太陽の高度に応じて背景色を4段階に分けています。

NG

次に、Windows API の Bitblt を使って、Picture1にPicture3をOR演算でコピーします。これにより、Picture3の黒色の部分はPicture1のままで、Picture3の白色の部分はPicture1でも白色になります。

NG

そして、Picture1にPicture2をAND演算でコピーします。

NG

一見うまくいったように見えますが、背景色を明るくするとマスクしたい月の部分が浮かび上がってしまいます。

NG

(続く)

※ この記事の画像をクリックしても別窓で拡大画像は表示しません...

【関連記事】
月面Xと月面V (2017.01.07)
68年ぶりのスーパームーン (2016.11.16)
満月のクリスマス (2015.12.25)
十三夜の月 (2015.10.25)
スーパームーン2015 (2015.09.30)
スーパー中秋の名月 (2015.09.27)
後の十三夜 (2014.11.06)
白露と中秋の名月、そしてスーパームーン (2014.09.10)
今宵は満月、中秋の名月 (2013.09.20)
スーパームーン (2012.05.08)

|

« 月・金星・火星の共演 | トップページ | 月相のマスク方法【2】 »

天体・暦」カテゴリの記事

パソコン・インターネット」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/64930/65078290

この記事へのトラックバック一覧です: 月相のマスク方法【1】:

« 月・金星・火星の共演 | トップページ | 月相のマスク方法【2】 »