hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
小ワザ/画像処理/ペイントペン - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

ペイントペン

 画像をペンとして利用しスムーズなペイント動作を実現しています。(アルファチャンネルペン未実装)

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
-
|
|
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#include "user32.as"
#module
 
 
 
 
//Pen画像の取得= 
// コピータイプ(-1=通常コピー 0=白を透明化,1=黒を透明化,2=アルファブレンドコピーgmode7),
// 画像があるウィンドウID,
// コピーする左上X,
// コピーする右上Y,
// コピーする大きさX,
// コピーする大きさY),
// 始点X,始点Y,終点X,終点Y
#deffunc pline array p1, int p2, int p3, int p4,int p5
 
 
    redraw 0
    //初期位置
    sx=p2
    sy=p3
 
    //大きいほうの値を優先
    //幅の取得
    if p4>p2:xx=p4-p2:else:xx=p2-p4
    if p5>p3:yy=p5-p3:else:yy=p3-p5
 
    if xx>yy{
        lop=xx
        if yy!0:ss=lop/yy:else:ss=0
    }else{
        lop=yy
        if xx!0:ss=lop/xx:else:ss=0
    }    
 
 
    //2点間の距離を求める
    if p2<p4:s1=p4-p2:else:s1=p2-p4
    if p3<p5:s2=p5-p3:else:s2=p3-p5
    ssss=int(sqrt(s1*s1+s2*s2))+1
 
    lorgb=ginfo_r,ginfo_g,ginfo_b
 
    //コピータイプ指定
    switch p1(0)
        case -1
            gmode 1
        swbreak
        
        case 0
            gmode 4,,,256
            color 255,255,255
        swbreak
 
        case 1
            gmode 2
        swbreak
 
        case 2
            gmode 2//3
            //未実装です
        swbreak
    swend
    
    //ドットライン描画
    repeat ssss
    dir=atan(p4-p2,p5-p3)
    x=sin(dir)*cnt+p2:y=cos(dir)*cnt+p3
        pos x-9,y-9:gcopy p1(1),p1(2),p1(3),p1(4),p1(5)
    loop
    
    color lorgb(0),lorgb(1),lorgb(2)
    redraw 1
    return
 
#global
 
    buffer 2
    sysfont 17
    mes "☆"        //ペン
    
 
    gsel 0
    
    dim rect,5
    repeat
    
    getkey key,1
 
 
    if key=1{
        
        
        if flag=0:SetCapture(hwnd):flag=1
        
        GetWindowRect hwnd,varptr(rect)
        //if (rect.0<=ginfo_mx)&(rect.1+100<=ginfo_my)&(rect.2>=ginfo_mx)&(rect.3>=ginfo_my){
            pen=0,2,0,0,12,12
            pline pen,mousex,mousey,lox,loy
        //}
 
        lmx=mousex
        lmy=mousey
 
    }else{
        if flag=1:ReleaseCapture
        flag=0
    }
        lox=mousex
        loy=mousey
 
    await 10
    loop
    
    stop
 
 
 
    return
 
 
 
 
  • どうでしょうか?星ペンだと筆っぽくなりますね(;´瓜`) -- As 2006-11-25 (土) 01:01:41
  • pen(0) → p1(0) -- Shark++ 2006-11-25 (土) 01:27:16

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:48:02 (2436d)