Skip to content

SRCRender: 画像の読み込みのエラーと、読み込み中の進み具合のバーを出さない #1536

Open

Description

@7474

#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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions