投稿日 | : 2003/09/01(Mon) 22:56 |
投稿者 | : 困った子 |
URL | : |
タイトル | : Re^2: スクリーンのスナップショットを色を替えて表示したい |
> TransparentBlt APIを使用すれば指定の色を透過させてビットマップを転送できます。
> 変更したい色をピクチャーボックスのバックカラーにしておけば、それで変更できるかと
> 思います。ただ、貴方が希望される動作になるかは?
> TransparentBlt で検索すれば、サンプルが見つかります。
> http://plaza5.mbn.or.jp/~heropa/vb08.htm
>
> 又、単純な方法ならドットの色を読み込んで指定の色だったら変更したい色に置き換えればできます。
> ここの[ピクチャーを回転して表示(90度毎)]は調べた位置の色を90度回転した位置に
> 表示しているのです。
回答ありがとうございます。
単純に、ドットの色を変更するだけなので、[ピクチャーを回転して表示(90度毎)]を参考にしましたが、
色を変更して、ピクチャーボックスに表示することはできましたが、ビットマップを保存したり、
印刷することができません。
また、色が変更できても、再表示で戻ってしまいます。
再度、宜しくお願いします。
'クリップボード内にビットマップ形式のデータがあるか調べる
If Clipboard.GetFormat(vbCFBitmap) Then
'ファイル名を自動生成
MyFileName = App.Path & "\" & Format$(Now, "yymmddhhmmss") & ".BMP"
'表示データーをビットマップ形式のデータで保存
Set PicData = Clipboard.GetData
picture1.picture = PicData 'ピクチャーボックスにビットマップを設定
'色を変更
For x = 0 To Picture.ScaleWidth
For y = 0 To Picture.ScaleHeight
'図のカラー情報の読み取り
c = Picture.Point(x, y)
'読み取ったカラー情報を角度を変更して描画
If c <> -1 Then
if c = 0 then
c = &HFFFFFF
Picture.PSet (x, y), c
end if
end if
next y
next x
この後、保存・印刷をしたいと思います。