PAINTについて教えてください 小川 2006/04/12 19:27:39 └PAINT文は座標変換の対象ではありません。 白石 和夫 2006/04/12 20:13:10 └DRAWDISKを使って、修正しました。... 小川 2006/04/13 18:19:28
PAINTについて教えてください 小川 2006/04/12 19:27:39 ツリーへ
PAINTについて教えてください |
返事を書く |
小川 2006/04/12 19:27:39 | |
このあいだはパッド入力を教えて頂いてありがとうございました。 今回はPAINT命令について相談です。 以下のプログラムで、円が画面の端に行くと、PAINTが有効に ならないのですが、何かうまい方法はないでしょうか? OPTION ARITHMETIC NATIVE DECLARE EXTERNAL FUNCTION joyGetPos DECLARE EXTERNAL PICTURE circle SET BITMAP SIZE 998,644 SET WINDOW -499,499,-322,322 DO SET DRAW MODE Hidden ! hidden draw モードへ移行 SET COLOR MODE "REGULAR" CLEAR ! 初期化 SET COLOR MODE "NATIVE" LET pji$=REPEAT$("#",4*4) !構造体を確保する LET rc=joyGetPos(0, pji$) IF int32(pji$,0)=65535 AND int32(pji$,4)=32767 AND jvx<4 THEN LET jvx=jvx+.06 IF int32(pji$,0)=0 AND int32(pji$,4)=32767 AND jvx>-4 THEN LET jvx=jvx-.06 IF int32(pji$,0)=32767 AND int32(pji$,4)=0 AND jvy<5 THEN LET jvy=jvy+.08 IF int32(pji$,0)=32767 AND int32(pji$,4)=65535 AND jvy>-5 THEN LET jvy=jvy-.08 IF int32(pji$,0)=0 AND int32(pji$,4)=0 THEN IF jvx>-4 THEN LET jvx=jvx-.06 IF jvy<5 THEN LET jvy=jvy+.08 END IF IF int32(pji$,0)=65535 AND int32(pji$,4)=0 THEN IF jvx<4 THEN LET jvx=jvx+.06 IF jvy<5 THEN LET jvy=jvy+.08 END IF IF int32(pji$,0)=65535 AND int32(pji$,4)=65535 THEN IF jvx<4 THEN LET jvx=jvx+.06 IF jvy>-5 THEN LET jvy=jvy-.08 END IF IF int32(pji$,0)=0 AND int32(pji$,4)=65535 THEN IF jvx>-4 THEN LET jvx=jvx-.06 IF jvy>-5 THEN LET jvy=jvy-.08 END IF LET x=x+jvx LET y=y+jvy SET LINE COLOR 0 PLOT LINES: -499 ,0 ; 499 ,0 PLOT LINES: 0, 322 ; 0, -322 PLOT LINES: -499, 322; 499,-322 PLOT LINES: -499,-322; 499, 322 DRAW circle WITH SHIFT(x,y) SET DRAW MODE explicit ! explicit draw モードへ移行 IF GetKeyState(27)<0 THEN EXIT DO LOOP CLEAR END EXTERNAL FUNCTION int32(s$,p) OPTION ARITHMETIC NATIVE OPTION CHARACTER byte LET n=0 FOR i=1 TO 4 LET n=n+256^(i-1)*ORD(s$(p+i:p+i)) NEXT i IF n<2^31 THEN LET int32=n ELSE LET int32=n-2^32 END FUNCTION EXTERNAL FUNCTION joyGetPos(uJoyID, pji$) !位置とボタンの状態を取得する OPTION ARITHMETIC NATIVE ASSIGN "winmm.dll","joyGetPos" END FUNCTION EXTERNAL PICTURE circle OPTION ARITHMETIC NATIVE SET LINE COLOR 3 FOR t=0 TO 2*PI STEP PI/180 LET r=40+COS(t) PLOT LINES: r*cos(t),r*sin(t); NEXT t SET AREA COLOR 16777215 PAINT 0,0 END PICTURE |
└PAINT文は座標変換の対象ではありません。 白石 和夫 2006/04/12 20:13:10 ツリーへ
Re: PAINTについて教えてください |
返事を書く |
白石 和夫 2006/04/12 20:13:10 | |
PAINT文は座標変換の対象ではありません。 MAT PLOT AREA文を使うか, DRAW DISKを使ってみてください。 |
└DRAWDISKを使って、修正しました。... 小川 2006/04/13 18:19:28 ツリーへ
Re: PAINT文は座標変換の対象ではありません。 |
返事を書く |
小川 2006/04/13 18:19:28 | |
DRAW DISKを使って、修正しました。うまくいきました。 ありがとうございました。 OPTION ARITHMETIC NATIVE DECLARE EXTERNAL FUNCTION joyGetPos DECLARE EXTERNAL PICTURE circle SET BITMAP SIZE 998,644 SET WINDOW -499,499,-322,322 SET AREA COLOR 0 DO SET DRAW MODE Hidden ! hidden draw モードへ移行 CLEAR ! 初期化 LET pji$=REPEAT$("#",4*4) !構造体を確保する LET rc=joyGetPos(0, pji$) IF int32(pji$,0)=65535 AND int32(pji$,4)=32767 AND jvx<4 THEN LET jvx=jvx+.06 IF int32(pji$,0)=0 AND int32(pji$,4)=32767 AND jvx>-4 THEN LET jvx=jvx-.06 IF int32(pji$,0)=32767 AND int32(pji$,4)=0 AND jvy<5 THEN LET jvy=jvy+.08 IF int32(pji$,0)=32767 AND int32(pji$,4)=65535 AND jvy>-5 THEN LET jvy=jvy-.08 IF int32(pji$,0)=0 AND int32(pji$,4)=0 THEN IF jvx>-4 THEN LET jvx=jvx-.06 IF jvy<5 THEN LET jvy=jvy+.08 END IF IF int32(pji$,0)=65535 AND int32(pji$,4)=0 THEN IF jvx<4 THEN LET jvx=jvx+.06 IF jvy<5 THEN LET jvy=jvy+.08 END IF IF int32(pji$,0)=65535 AND int32(pji$,4)=65535 THEN IF jvx<4 THEN LET jvx=jvx+.06 IF jvy>-5 THEN LET jvy=jvy-.08 END IF IF int32(pji$,0)=0 AND int32(pji$,4)=65535 THEN IF jvx>-4 THEN LET jvx=jvx-.06 IF jvy>-5 THEN LET jvy=jvy-.08 END IF LET x=x+jvx LET y=y+jvy PLOT LINES: -499 ,0 ; 499 ,0 PLOT LINES: 0, 322 ; 0, -322 PLOT LINES: -499, 322; 499,-322 PLOT LINES: -499,-322; 499, 322 DRAW circle WITH SHIFT(x,y) SET DRAW MODE explicit ! explicit draw モードへ移行 IF GetKeyState(27)<0 THEN EXIT DO LOOP CLEAR END EXTERNAL FUNCTION int32(s$,p) OPTION ARITHMETIC NATIVE OPTION CHARACTER byte LET n=0 FOR i=1 TO 4 LET n=n+256^(i-1)*ORD(s$(p+i:p+i)) NEXT i IF n<2^31 THEN LET int32=n ELSE LET int32=n-2^32 END FUNCTION EXTERNAL FUNCTION joyGetPos(uJoyID, pji$) !位置とボタンの状態を取得する OPTION ARITHMETIC NATIVE ASSIGN "winmm.dll","joyGetPos" END FUNCTION EXTERNAL PICTURE circle OPTION ARITHMETIC NATIVE DRAW disk WITH SCALE(40)*SHIFT(x,y) FOR t=0 TO 2*PI STEP PI/180 LET r=40+COS(t) PLOT LINES: r*cos(t),r*sin(t); NEXT t END PICTURE |