#1498(GUI.bas・Graphics.bas・Status.bas・フォームなど)の突き合わせで見つけた、SRCRender(SRC#Web・SRC#Avalonia)の表示の違いです。どちらも SRC#Form は VB と同じです。 ## 1. 壊れた画像・サポートしない形式の画像のエラーメッセージ - VB の根拠: `SRC/SRC_20121125/Susie.bas` の LoadPicture2(37〜58 行・84〜97 行)。 - .bmp・.jpg・.gif・.png 以外のときは、「画像ファイル<改行>名前<改行>の画像フォーマットはサポートされていません。」を出します。 - 読めなかったときは、「…の読み込み中にエラーが発生しました。<改行>画像ファイルが壊れていないか確認して下さい。」を出します。 - 呼んでいるのは GUI.bas の 6772 行(DrawPicture)です。失敗した画像も PicBuf に名前を残すので、同じ画像を続けて描いてもメッセージは 1 度だけです。 - C# の動作: `SRCRender/ImageCache.cs` の Load は、例外をログに書いて null を返すだけです。DrawPicture は false を返し、画面にはメッセージが出ません。 - 直し方の案 - ImageCache.Load で、デコードの失敗を区別して返します。 - DrawPicture の側で、初めて失敗した名前のときだけ GUI.ErrorMessage で VB の文言を出します。 - 描画のスレッドとダイアログの関係を確かめます。 ## 2. Now Loading の進み具合のバー - VB の根拠 - `SRC/SRC_20121125/NowLoading.frm` の Progress(73 行)は、picBar の幅 × Value \ Size を塗ります。 - 画面の定義: 214×88、「Now Loading ...」は Times New Roman 18 ポイントの太字です。picBar は左 16・上 56・183×13 で、白地に &H800000 で塗ります。 - GUI.bas の DisplayLoadingProgress・SetLoadImageSize から呼びます。 - C# の動作: SRCRender の OpenNowLoadingForm は、State.Splash に "Now Loading..." を入れて大きな文字を書くだけです。DisplayLoadingProgress・SetLoadImageSize は空なので、進み具合が出ません。 - 直し方の案 - ScreenState に、読み込みの総数と済んだ数を持たせます。 - SetLoadImageSize・DisplayLoadingProgress で更新します。 - ScreenRenderer で、NowLoading.frm と同じ灰色のダイアログ・文字・バーを描きます。 対応表: `docs/history/porting/vb-map/` の Susie_bas.md(LoadPicture2)・GUI_bas.md(DisplayLoadingProgress・SetLoadImageSize)・NowLoading_frm.md(Progress)
Activity