ページ 11

256色

Posted: 2006年2月14日(火) 14:11
by 中年ビギナー
プログラムも少しづつ進んでます。今は色で困っています。カラーコードでは8色ですが256色で使いたいのです。
CODEでconst RGB(r,g,b)=r or (g<<8) or (b<<16) とありましたが、使い方がよく分かりません。r=50、g=100、b=150の合成色で円を塗りつぶすようにする具体的なプログラムを教えて下さい。お願いします。

Re: 256色

Posted: 2006年2月14日(火) 16:14
by Yoshi
> プログラムも少しづつ進んでます。今は色で困っています。カラーコードでは8色ですが256色で使いたいのです。
> CODEでconst RGB(r,g,b)=r or (g<<8) or (b<<16) とありましたが、使い方がよく分かりません。r=50、g=100、b=150の合成色で円を塗りつぶすようにする具体的なプログラムを教えて下さい。お願いします。

中年ビギナーさんはN88BASICモードで上のことがしたいのですよね。
となると、少々面倒なことになるかもしれません。
Ver2では

コード: 全て選択


CirCle(100,100),100,RGB(50,150,100),,,,f,RGB(50,150,100)
とすればよいのですが,今はこれができません。
そこでinclude\basic\prompt.sbp
のなかのCIRCLEマクロの中に

コード: 全て選択


hPen=CreatePen(PS_SOLID,1,GetBasicColor(ColorCode))

If bFill Then
   hBrush=CreateSolidBrush(GetBasicColor(BrushColor))
Else
   hBrush=GetStockObject(NULL_BRUSH)
End If
というコードがありますから

コード: 全て選択


If ColorCode < 0 Then
	hPen=CreatePen(PS_SOLID,1,-ColorCode)
Else
	hPen=CreatePen(PS_SOLID,1,GetBasicColor(ColorCode))
EndIf

If bFill Then
	If BrushColor < 0 Then
		hBrush=CreateSolidBrush(-BrushColor)
	Else
		hBrush=CreateSolidBrush(GetBasicColor(BrushColor))
	End If
Else
	hBrush=GetStockObject(NULL_BRUSH)
End If
と変更してください。

フルカラーでN88BASICモードが楽しめます。
ただし,正式サポートじゃないので責任はもてません。

コード: 全て選択


#N88BASIC
CirCle(100,100),100,-RGB(50,150,100),,,,f,-RGB(50,150,100)

Re: 256色

Posted: 2006年2月15日(水) 17:50
by Yoshi
ちょっと説明が難しすぎた&まちがっていたかもしれません。
そこでもう一度ご説明いたします。

ActiveBasicをインストールしたフォルダーがありますね。
ProjectEditor.exeが入っているフォルダーです。
そのフォルダーのなかにIncludeというフォルダーがあります。
このフォルダーを開いてください。
するとbasicというフォルダーがあります。
これを開いてください。
すると、prompt.sbpというファイルがあります。
これをProjectEditor等で開いてください。
(最初に開いた初期設定のときそのまま関連付けるを押した場合、prompt.sbpをダブルクリックするとProjectEditorが開きます。)
これを次のように書き換えてください。

(具体的には、まず下の「改造したprompt.sbp」を開き全コードをコピーする。
ProjectEditorにもどり、Ctrl+Aなどで「すべて選択」した後
Ctrl+Vで「貼り付け」。)

そして、上書き保存をします。
これで準備は整いました。
後は下のようなプログラムを作成するだけです。

コード: 全て選択


#N88BASIC
'例1 円と四角と点を書きます。 
Circle (200, 120), 80 , -RGB(50,100,150), 0, 0, ,f, -RGB(50,100,150)
Line(100,100)-Step(80,40),-RGB(20,40,100),BF,-RGB(100,30,50)
'ちょっと分かりずらいかも
Pset(120,100),-RGB(255,100,0)

コード: 全て選択


#N88BASIC
'例2 グラデーション
'ご覧のようにRGBを使えば256色ではなく
'フルカラー(16777216色)で表現できます
Dim i As Long
For i = 0 To 255
	Line(i,0)-Step(0,100),-RGB(i,0,0)
Next

For i = 0 To 255
	Line(i,120)-Step(0,100),-RGB(0,i,0)
Next

For i = 0 To 255
	Line(i,240)-Step(0,100),-RGB(0,0,i)
Next

For i = 0 To 255
	Line(i,360)-Step(0,100),-RGB(i,0,255 - i)
Next


いままで、カラーコードを指定した場所に
- RGB( 赤,緑,青)
と指定してください。
赤,緑,青にはもっとも暗くしたい場合は0を
最も明るくしたい場合は255を入れてください。