[リストへもどる]
一括表示

投稿時間:2003/09/01(Mon) 16:50
投稿者名:困った子
URL :
タイトル:
スクリーンのスナップショットを色を替えて表示したい
スクリーンのスナップショットをクリップボードに保存及び印刷のサンプルに追加して、
取得したスナップショットの特定の色を変更して、保存および印刷する方法を
教えて下さい。
宜しくお願いします。

投稿時間:2003/09/01(Mon) 18:48
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: スクリーンのスナップショットを色を替えて表示したい
TransparentBlt APIを使用すれば指定の色を透過させてビットマップを転送できます。
変更したい色をピクチャーボックスのバックカラーにしておけば、それで変更できるかと
思います。ただ、貴方が希望される動作になるかは?
TransparentBlt で検索すれば、サンプルが見つかります。
http://plaza5.mbn.or.jp/~heropa/vb08.htm

又、単純な方法ならドットの色を読み込んで指定の色だったら変更したい色に置き換えればできます。
ここの[ピクチャーを回転して表示(90度毎)]は調べた位置の色を90度回転した位置に
表示しているのです。

投稿時間: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
  この後、保存・印刷をしたいと思います。
 

投稿時間:2003/09/02(Tue) 00:15
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: スクリーンのスナップショットを色を替えて表示したい
表示するPictureBox に Picture1.AutoRedraw = True に設定しておいて下さい。
これで描画したのが消えません。
保存処理は、グラフィック関係のピクチャーボックスに表示・描画した画像・文字の保存を見て下さい。
印刷は、印刷関係の画像ファイルを印刷するを見て下さい。

処理が遅いようなら、APIを使った方法を試して見て下さい。

投稿時間:2003/09/02(Tue) 01:08
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 画像の保存及び簡単な印刷
後は色々工夫して見て下さい。

Private Sub Command1_Click()
    Dim MyFileName As String
    Dim x As Long, y As Long, c As Long
    With Picture1
        .AutoRedraw = True
        .AutoSize = True
        .ScaleMode = vbPixels
    
        'クリップボード内にビットマップ形式のデータがあるか調べる
        If Clipboard.GetFormat(vbCFBitmap) Then
            Set .Picture = Clipboard.GetData()
            '色を変更
            For x = 0 To .ScaleWidth
                For y = 0 To .ScaleHeight
                    '図のカラー情報の読み取り
                    c = .Point(x, y)
                    '読み取ったカラー情報を色を変更して描画
                    If c = vbBlack Then
                        Picture1.PSet (x, y), vbWhite
                    End If
                Next y
            Next x
            'ファイル名を自動生成
            MyFileName = App.Path & "\" & Format$(Now, "yymmddhhmmss") & ".BMP"
            '表示データーをビットマップ形式のデーターで保存
            SavePicture Picture1.Image, MyFileName
            Printer.PaintPicture .Image, 10, 10, .Width, .Height
            Printer.EndDoc
        End If
    End With
End Sub

投稿時間:2003/09/02(Tue) 18:53
投稿者名:困った子
URL :
タイトル:
Re^4: 画像の保存及び簡単な印刷
ありがとうございました。
教えて頂いた方法で、色を替えて保存・印刷することができました。