tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル図形の塗りつぶし描画
記事No14845
投稿日: 2010/08/04(Wed) 11:50
投稿者ぶぶ
お世話になっております。
VB6.0 SP6を使用しております。
今回描画について分からない点があり質問させていただきます。
こちらの「三角形の内部を塗りつぶす    (071)」を参考に
ExtFloodFillを使用して、四角形をRGB(255,42,0)を指定して塗りつぶしました。
その図をSavePictureを使用して保存しています。

WidowsXP Professional Version 2002 SP3では保存した画像はRGB(255,42,0)で
描画されていたのですが、
Windows2000 SP3で保存した画像はRGB(255,40,0)で描画されておりました。
まったく同じコードの実行で結果がことなるため、原因がわからず困っております。
さらに、また別のWindows2000 SP3の環境で実行したところ(255,41,0)で描画されておりました。

よろしくお願い致します。

[ツリー表示へ]
タイトルRe: 図形の塗りつぶし描画
記事No14846
投稿日: 2010/08/04(Wed) 12:21
投稿者魔界の仮面弁士
画面の色数が、24bitカラー(16,777,216色)以上になっている事を確認してみて下さい。

16bitカラー(65536色)、15bitカラー(32768色)、8bitカラー(256色パレット)の
環境においては、正確な色を再現できない可能性があります。


SavePicture で出力されたファイルの色数は、第一引数に指定された
Picture オブジェクトの色数情報を引き継ぐようになっていますが、
PictureBox.Image の色数は、画面の色数に依存する事に注意して下さい。

[ツリー表示へ]
タイトルRe^2: 図形の塗りつぶし描画
記事No14847
投稿日: 2010/08/04(Wed) 13:25
投稿者ぶぶ
回答ありがとうございます。
確認しましたところ、XP(正常に作成している端末)では、「最高32Bit」で設定し、
2000の端末はいずれも、「Truecolor32Bit」でした。
どれも選択肢の中の一番最高値を選択している状態です。

引き続きよろしくお願い致します

[ツリー表示へ]
タイトルRe^3: 図形の塗りつぶし描画
記事No14848
投稿日: 2010/08/04(Wed) 15:35
投稿者花ちゃん
保存する前の塗潰した画像でも同様に色が変更されているのでしょうか?
それとも保存して何かに表示してから変更されるのでしょうか?


保存する前の塗潰した画像で確認したところ、Windows XP Windows Vista Windows 7 共
11007 = 255,42,0 で変化する事はありませんでした。
保存した画像を表示して調べても上記同様・どの環境でも変化はしておりませんでした。

どのように調べて変化した事を確認されたのか課程を教えて下さい。
(できるだけ問題点を切り分けて)
再度確認したいと思いますので。

又、Windows2000 SP3で保存した画像を Windows XP 上で確認した場合はどうか?
  その逆ならどうなのか?

  Windows2000 SP4 ならどうなのか?


  Picture1.BackColor = RGB(255, 42, 0)
  SavePicture Picture1.Image, "c:\test.bmp"
  だけで保存した画像の場合はどうなのか?

  

[ツリー表示へ]
タイトルRe^4: 図形の塗りつぶし描画
記事No14849
投稿日: 2010/08/05(Thu) 09:05
投稿者花ちゃん
因みに、High Color (16 ビット) で環境で実行すると塗潰した時点で、255,40,0 に変更
してました。

この辺の設定が、間違いなく、True Color (32 ビット) になっているか?
又、最新のドライバーが入っているか?
(ディスプレイ関係で同様の問題を見たような、無いような)

[ツリー表示へ]
タイトルRe^5: 図形の塗りつぶし描画
記事No14851
投稿日: 2010/08/05(Thu) 12:19
投稿者ぶぶ
> 因みに、High Color (16 ビット) で環境で実行すると塗潰した時点で、255,40,0 に変更
> してました。
>
> この辺の設定が、間違いなく、True Color (32 ビット) になっているか?
コントロールパネルにて確認しましたがTrue Color (32 ビット)になっています。

> 又、最新のドライバーが入っているか?
> (ディスプレイ関係で同様の問題を見たような、無いような)
この点については確認しますが、少し時間がかかるかもしれません。

ありがとうございます

[ツリー表示へ]
タイトルRe^4: 図形の塗りつぶし描画
記事No14850
投稿日: 2010/08/05(Thu) 12:17
投稿者ぶぶ
回答ありがとうございます。
WINDOWS2000の端末は、他のユーザーが使用しているので、確認作業が遅れますがご容赦ください。

> 保存する前の塗潰した画像でも同様に色が変更されているのでしょうか?
ステップ実行で、塗りつぶす際、(255,42,0)の内容で描画しているのは確認していますが、
その後のPictureBOXの内容の確認まではしていません。
確認してからご報告します

> それとも保存して何かに表示してから変更されるのでしょうか?
一旦SavePictureで保存して、再度LoadPictureしてPaintPictureします。
その際上下を反転表示します。もう一度SavePictureします。

別工程にてSaveされたPictureをLoadして色を取得します。
Save後のPictureの色は(255,41,0)と変わっていました。
PaintPicture前のRGBを確認しそこねてますので、確認後ご報告します

> 保存する前の塗潰した画像で確認したところ、Windows XP Windows Vista Windows 7 共
> 11007 = 255,42,0 で変化する事はありませんでした。
> 保存した画像を表示して調べても上記同様・どの環境でも変化はしておりませんでした。
XPではきちんと描画されておりました。こちtoらでも変わるのは2000の環境です。
>
> どのように調べて変化した事を確認されたのか課程を教えて下さい。
> (できるだけ問題点を切り分けて)
ステップ実行で、RGBが正しく設定されているか確認しSavePicture後の画像を
PhotoShopにて表示してRGBを確認しています。

> 又、Windows2000 SP3で保存した画像を Windows XP 上で確認した場合はどうか?
>   その逆ならどうなのか?
2000→XP RGB(255,41,0)またはRGB(255,20,0)
XP→2000 RGB(255,42,0)でした。

>   Windows2000 SP4 ならどうなのか?
この環境がありませんので、確認できません。SPを上げるのも
すぐにはできないようです。

>   Picture1.BackColor = RGB(255, 42, 0)
>   SavePicture Picture1.Image, "c:\test.bmp"
>   だけで保存した画像の場合はどうなのか?
後ほど確認し、ご報告いたします

[ツリー表示へ]