ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 21:23

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - [AB3]AB2/N88ライクなBLoad/Put@/Get@/Point/Pset
作成者 メッセージ
  記事の件名:  Re: [AB3]AB2/N88ライクなBLoad/Put@/Get@/Point/Pset  引用付きで返信する
これをAB4でやりたいのですが・・・
投稿記事 Posted: 2018年8月09日(木) 12:49
  記事の件名:  [AB3]AB2/N88ライクなBLoad/Put@/Get@/Point/Pset  引用付きで返信する
【使い方】
#N88BASIC利用下でお願いします。
上記を適当なファイルに保存し、インクルードしてください。

・BMPをファイルから読み込む
Sub BLoad( strBmpFile As String, ByRef hBmp As Long )
 strBmpFile ビットマップデータが入ったファイル名を指定します。
 hBmp 読み込まれたビットマップデータを示すハンドルが格納されます。

・BMPをプロンプト画面から読み込む(Get@)
Sub GetBmp( x As Long, y As Long, w As Long, h As Long, ByRef hBmp As Long )
 x,y 選択する長方形の開始点の座標を指定します。
 w,h 選択する長方形の終始点の座標を指定します。
 hBmp 作成されたビットマップデータを示すハンドルが格納されます。

・読み込んであるBMPを画面に表示する(Put@)
Sub PutBmp( x As Long, y As Long, hBmp As Long)
 もしくは
Sub PutBmp( x As Long, y As Long, hBmp As Long, dwRop As DWord )
 x,y ビットマップの左上の座標を指定します。
 hBmp ビットマップデータを示すポインタを指定して下さい
 dwRop ラスタオペレーションを指定します。
      PSet_BASIC … ビットマップをそのまま画面にコピーします。
      OR_BASIC … ビットマップの色と画面の色をOR演算した結果を表示します。
      XOR_BASIC … ビットマップの色と画面の色をXOR演算した結果を表示します。
      AND_BASIC … ビットマップの色と画面の色をAND演算した結果を表示します。

・終了処理(AB2では必要ありませんでしたが…)
Sub FinishBmp( hBmp As Long )
 hBmp ビットマップデータを示すポインタを指定して下さい
 上記のBload/GetBmpを使った時は、最後に(End命令の直前とか)必ずこれを呼び出してください。

・指定した座標の色を取得する
Function Point( x As Long, y As Long ) As Long
 x,y 座標を指定します
 返り値
  取得した色が、24ビットデータで返ります。
  赤・緑・青への分解(0~255)は
コード:
r = Point( x, y )
nRed = ( r And &HFF )
nGreen = ( r And &HFF00 ) / &H100
nBlue = ( r And &FF0000 ) / &H10000
でしょうか(すいません。テストしてません)。

・指定したドットを描画する
Sub PsetBmp( x As Long, y As Long, crColor As DWord )
 x,y 座標を指定します
 crColor RGBを指定します。
      ※AB3デフォルトのPsetはカラーコード(0~8)にしか
       対応してないので、上記Point()/RGBで色を指定するにはこちらが必要。


【使用例】
コード:
Dim s As String
Dim hBmp As Long

s = "hoge.bmp"
BLoad( s, hBmp )

PutBmp( 1,1, hBmp )
GetBmp( 100,100, 50,50, hBmp )
PutBmp( 280,280, hBmp )

FinishBmp( hBmp )
End
以上。



AB2のヘルプファイルの説明文と、
BackSearchAB.chmのAGJ様とysama様の投稿を
参考にさせていただきました(とゆうか、まんま?^^;)。
ありがとうございました。


≪12/7(2:08)修正しました≫
無効リージョンの処理を忘れてました。直に描画してました(^^;)
今度は、窓が隠れても画像は消えないと思います。
投稿記事 Posted: 2005年12月07日(水) 00:00

全ての表示時間は UTC+09:00 です


ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean