FreeBASIC マニュアルのトップに戻る

FreeBASIC Bload

目次→描画ライブラリ参考→2次元 描画関数BLOAD←オリジナル・サイト

BLOAD 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

Bsaveで作成されたファイルや、互換性のある BMP 画像ファイルから、任意のデータを読み込む。

構文:
declare function Bload ( byref filename as const string, byval dest as any ptr = 0, byval pal as any ptr = 0 ) as long

用法:
result = Bload( filename [, [ dest ] [, pal ] ] )

パラメタ:
filename
画像をロードする、ファイルの名前;
ファイル経路(パス)を含むことができます。
dest
画像のロード先の記憶域、または、現在の描画画面の作業ページに、画像をコピーするための、ヌル (0)
pal
パレットのロード先の記憶域、または、現在の描画画面のパレットを変えるためのヌル(0)。パレットを使う場合。

戻り値:
うまくいくと、戻り値は、ゼロ (0) 。エラーの場合は、エラー内容を示す非ゼロの、エラー・コードになります。
エラー処理 を参照下さい。

説明:
Bload は、Bsave で作成されたファイルから、画像データや、他のデータをロードするために、使用できます。
そして、そのデータを、配列に保存するか、または画面に貼り付けます。
dest を与えないか、またはヌル(0)なら、画像データは、現在の描画画面の作業中のページに貼り付けられます。
それ以外では、データは、画像データとして、dest で与えられたアドレスにロードされます。
Bload は、描画モードが初期化されている場合にだけ、呼び出す必要があります。そうでないと、プログラムがクラッシュします(テキストモードで機能するための BLOAD/BSAVEテキストモードを使う を参照)。

Bload は、3つの異なったタイプのファイルを、ロードできます:
QB 形式のデータ・ファイルとBMPファイルは、開かれると、FBコンパチブル画像形式に変換されます。

画素の解像度が、8ビット以下の画像ファイルは、画像で使う色の値を説明する「パレット」を含んでいます。
pal が、ヌル(0)でないなら、パレットは、メモリの指定されたアドレスで始まる部分に、コピーされます。
そうでない場合、現在の描画画面がパレットを使っているなら、そのパレットは、画像ファイルと合致するものに、変えられます。

画像を保存するのに、「非BMP」の2つのファイル形式のうちの1つを使うと、画像ファイルは、ロードされている同じ描画画面モードで、 Bsave で作成されたものになります。
BMPファイル形式を使うと、この制限は適用されません。

Bload を使って、BMP ファイルをロードするときには、画像は、トゥルー・カラー(1画素あたり、15、16、24または32ビット)か、パレット化/索引化(8ビット以下)でなければなりません。
 画像データは、現在の色の濃さに適切な、ピクセル形式に変換されます。ただし、トゥルー・カラーは、パレット化画像に減色することはできません。
 Bload は、RLE 圧縮を使う BMPファイルをサポートしません。また、他の画像ファイルの種類(PNG、JPG、GIF...)も、サポートしません。
 Bload は、可能な場合は、アルファ・チャンネル情報をロードします。対象は、BITMAPV4HEADER または BITMAPV5HEADERファイル・ヘッダーを持った、32ビットのBMPファイルです。

Bload が返すエラーコードは、次の行での Err を使って確認できます。Bload の関数バージョンは、32ビット Long のエラーコードを、直接返します。

ランタイム・エラー:
Bload は、以下の ランタイム・エラー の1つを返します:

(1) 不法な関数呼び出し
(2)ファイルが見つからない
(3)ファイル入出力誤り


例:
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

'現在作業中のページに、画像をロードします
Screen 18, 32
Cls
BLoad "picture.bmp"
Sleep


' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

'48 ×48 ビットマップを、画像にロードします
ScreenRes 320, 200, 32
Dim myImage As Any Ptr = ImageCreate( 48, 48 )
BLoad "picture.bmp", myImage
Put (10,10), myImage
ImageDestroy( myImage )
Sleep


' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

ScreenRes 640, 480, 8 '' 8-bit パレット描画モード
Dim pal(0 To 256-1) As Integer '' 256 色を使える、32ビットの整数配列

'' ビットマップを画面にロードして、パレットを pal() 配列に置きます
BLoad "picture.bmp", , @pal(0)

WindowTitle "Old palette"
Sleep

'' 新しいパレットを pal() 配列から設定
Palette Using pal(0)

WindowTitle "New palette"
Sleep


' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

'' 画像バッファーを、BMP 画像と同じ寸法で作成して、
'' そこにファイルをロードする関数。

Const NULL As Any Ptr = 0

Function bmp_load( ByRef filename As Const String ) As Any Ptr

    Dim As Long filenum, bmpwidth, bmpheight
    Dim As Any Ptr img

    '' BMP ファイルを開く
    filenum = FreeFile()
    If Open( filename For Binary Access Read As #filenum ) <> 0 Then Return NULL

        '' BMP 寸法を検索する。
        Get #filenum, 19, bmpwidth
        Get #filenum, 23, bmpheight

    Close #filenum

    '' 画像を、BMP の寸法で作成します
    img = ImageCreate( bmpwidth, Abs(bmpheight) )

    If img = NULL Then Return NULL

    '' BMP ファイルを、画像バッファにロードします
    If BLoad( filename, img ) <> 0 Then ImageDestroy( img ): Return NULL

    Return img

End Function



Dim As Any Ptr img

ScreenRes 640, 480, 32

img = bmp_load( "picture.bmp" )

If img = NULL Then
    Print "bmp_load failed"

Else

    Put (10, 10), img

    ImageDestroy( img )

End If

Sleep

QBからの違い:

参照:
2次元描画関数に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2021-12-05 03:15:06
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承