VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/07/21(Mon) 13:50
投稿者おじん
URL
タイトルRe^8: BitBltの使い方

私の知識では、ドット抜けのこと、速さとどちらを優先選択するかということです。
敷き詰めの部分、意図することが伝わらなかったようです。正六面体を”隙間なく”
敷き詰めたかったのです。
> For n = 0 To 3
> '   最初の部分はPicture2より左に少しはみだして貼り付けたい
>     SplitDraw Picture2, Picture3, Picture4, -1, n * 57 - 5 ' - 8 - (n * 8)
> Next n
の部分を次のようにして完成しました。SplitDraw関数もパラメータを2つ追加しました。
(数値は、試行錯誤の末です。論理的にしたいのですが!!!)
    For n = 0 To 3
    '1列目。六角形の左端を切り取り貼り付ける
        SplitDraw pic2, pic3, pic4, -1, n * 57 - 5, 16, 0
                                                    ^^^^^^
    Next n
    '2列目。上半分を切り取る
    SplitDraw pic2, pic3, pic4, 31, 0, 0, 32
                                      ^^^^^^^
    For n = 1 To 3
    '2列目。六角形全体
        SplitDraw pic2, pic3, pic4, 31, n * 57 - 5 - 28
    Next n
    For n = 0 To 3
    '3列目。六角形全体
        SplitDraw pic2, pic3, pic4, 79, n * 57 - 5
    Next n
    '4列目。2列目と同様
    SplitDraw pic2, pic3, pic4, 127, 0, 0, 32
                                       ^^^^^^
    For n = 1 To 3
        SplitDraw pic2, pic3, pic4, 127, n * 57 - 5 - 28
    Next n
    For n = 0 To 3
    '5列目。右端の隙間を埋める
        SplitDraw pic2, pic3, pic4, 175, n * 57 - 5
    Next n

  '敷き詰めのための関数
    Private sub SplitDraw(......,
        optional x0 as long=0,optional y0 as long=0)
    ^^^^^^^^^^^^^^^^^^^^^^^^
    lngRet = BitBlt(pic1.hDC, X, Y, _
                    pic3.ScaleWidth-x0, pic3.ScaleHeight-y0, _
                                   ^^^                  ^^^
                    pic3.hDC, x0, y0, SRCERASE)
                             ^^^ ^^^
    lngRet = BitBlt(pic1.hDC, X, Y, _
                    pic2.ScaleWidth-x0, -pic2.ScaleHeight-y0, _
                                   ^^^                   ^^^
                    pic2.hDC, x0, y0, SRCINVERT)
                             ^^^ ^^^
    end sub

まだ「ドット抜け、速さ」ついて課題は残っていますが、お陰様で一段落です。
ありがとうございました。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -