投稿日 | : 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
まだ「ドット抜け、速さ」ついて課題は残っていますが、お陰様で一段落です。
ありがとうございました。