artlet2dのタグがつけられたコード一覧

HSP Artlet2Dの円弧のバグ

#include "a2d.hsp"

	; 仮想イメージ 0 を作成
	alCreateImage 0, 640, 480
	if stat = -1 : dialog "GDI+ を初期化できませんでした。" : end

	d = 600.0	// 半径
				// s0=1.5にしても、200以下ぐらいにするとズレる
	f = d*0.9	// 太さ
	px = -d/2 + 20
	py = -d/2 + 20
	r0 =   0.0	// 開始角度
	r1 =  90.0	// 終了角度
	s0 = 0.0	// 描画角度を延長
				// s0 = 1.5 度にすると綺麗に水平垂直になる
	r0 -= s0
	r1 += s0*2

	// 目安線
	alColor 0, 0,0, 255
	alPenWidth 1
	alDrawLine px+d/2,py+d/2, px+d*2,py+d/2
	alDrawLine px+d/2,py+d/2, px+d/2,py+d*2

	// 円弧
	alColor 255, 0,0, 127
	alPenWidth f
	alDrawArc px,py, d,d, r0,r1

	alCopyImageToScreen 0, 0
	redraw

HSP 角丸の矩形を描画するモジュール

// 角丸矩形描画モジュール

#include "a2d.hsp"

#module
// ------------------------------------------------------------ //
//
// 命  令  :角丸矩形の描画
//
// 引  数  :x, y	: 矩形の左上座標
//           w, h	: 矩形のサイズ
//           r      : 角丸半径
//
// 返り値  :なし
//
// 機能説明:
//           引数で指定した位置・サイズの角丸矩形を描画します。
//
//           この矩形は、塗りつぶしではなく線で枠を描画した図形です。
//
// ------------------------------------------------------------ //
// Rounded Rectangle
#deffunc DrawRoundRect int p_x, int p_y, int p_w, int p_h, int p_r
	r = limit( p_r, 0, p_w/2)

	alDrawLine p_x          , p_y + r      , p_x          , p_y + p_h - r
	alDrawLine p_x + r      , p_y + p_h    , p_x + p_w - r, p_y + p_h
	alDrawLine p_x + p_w    , p_y + p_h - r, p_x + p_w    , p_y + r
	alDrawLine p_x + p_w - r, p_y          , p_x + r      , p_y

	alDrawArc p_x            , p_y            , r*2, r*2, 180, 90
	alDrawArc p_x            , p_y + p_h - r*2, r*2, r*2,  90, 90
	alDrawArc p_x + p_w - r*2, p_y + p_h - r*2, r*2, r*2,   0, 90
	alDrawArc p_x + p_w - r*2, p_y            , r*2, r*2, 270, 90
	return

// ------------------------------------------------------------ //
//
// 命  令  :塗りつぶし角丸矩形の描画
//
// 引  数  :x, y	: 矩形の左上座標
//           w, h	: 矩形のサイズ
//           r      : 角丸半径
//
// 返り値  :なし
//
// 機能説明:
//           引数で指定した位置・サイズの角丸矩形を描画します。
//
// ------------------------------------------------------------ //
// Rounded Rectangle
#deffunc FillRoundRect int p_x, int p_y, int p_w, int p_h, int p_r
	r = limit( p_r, 0, p_w/2)

	alFillRect  p_x           , p_y + r        , r, p_h - p_r*2
	alFillRect  p_x + r       , p_y + p_h - p_r, p_w - r*2, r
	alFillRect  p_x + p_w - r , p_y + r              , r, p_h - p_r*2
	alFillRect  p_x + r       , p_y , p_w - r*2, r

	alFillRect  p_x + r       , p_y + r , p_w - r*2, p_h - p_r*2

	alFillPie p_x            , p_y            , r*2, r*2, 180, 90
	alFillPie p_x            , p_y + p_h - r*2, r*2, r*2,  90, 90
	alFillPie p_x + p_w - r*2, p_y + p_h - r*2, r*2, r*2,   0, 90
	alFillPie p_x + p_w - r*2, p_y            , r*2, r*2, 270, 90
	return

#global

	; 仮想イメージ 0 を作成
	alCreateImage 0, 640, 480
	if stat = -1 : dialog "GDI+ を初期化できませんでした。" : end

	alPenWidth 3

	// 背景
	alColor 255, 200,200
	r = 10
	repeat ginfo_winx*2 /r
		alDrawLine cnt * r, 0, 0, cnt * r
	loop

	// 半透明フィルタ
	alColor 0, 0, 255, 127
	// 角丸
	DrawRoundRect 0,   0, 120, 120, 20
	// 角丸塗りつぶし
	FillRoundRect 0, 150, 120, 120, 20

	// グラデーションブラシ
	alGradientColor 150, 0, 150+120, 120, RGBA(255, 0, 0), RGBA(0, 0, 255)
	DrawRoundRect 150,   0, 120, 120, 30
	alGradientColor 150, 150, 150+120, 150+120, RGBA(255, 0, 0), RGBA(0, 0, 255)
	FillRoundRect 150, 150, 120, 120, 30

	// 半透明グラデーションブラシ
	alGradientColor 300, 0, 300+120, 120, RGBA(0, 255, 0, 255), RGBA(0, 255, 0, 0)
	DrawRoundRect 300,   0, 120, 120, 40
	alGradientColor 300, 150, 300+120, 150+120, RGBA(0, 255, 0, 255), RGBA(0, 255, 0, 0)
	FillRoundRect 300, 150, 120, 120, 40

	; 仮想イメージ 0 から HSP スクリーンにコピー
	alCopyImageToScreen 0, 0
	redraw

よく投稿されているコード

タグ

最近投稿されたコード