C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: VBのペイントのエアスプレーを作る方法


(過去ログ 107 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■63629 / inTopicNo.1)  VBのペイントのエアスプレーを作る方法
  
□投稿者/ flip (1回)-(2012/09/17(Mon) 15:27:13)

分類:[VB.NET/VB2005 以降] 

2012/09/17(Mon) 15:28:52 編集(投稿者)

エアスプレーが使いたいのですが一番軽く使えるものを作りたいのです。
初心者なのでできるだけわかりやすくお願いします。
グラデーションなども調べましたが真ん中ほど濃くする方法がわかりません。
もしAPI等があったらお願いします!
引用返信 編集キー/
■63630 / inTopicNo.2)  Re[1]: VBのペイントのエアスプレーを作る方法
□投稿者/ Azulean (33回)-(2012/09/17(Mon) 18:04:11)
PathGradientBrush というものはありますね。
中心点(CenterColor)に色を指定して、周囲の点(SurroundColors)にα値を変えた色を指定すれば中心が濃く、
周囲が薄くはなります。
それがペイントと同じかと言われれば違うと思います。全く同じものを作ろうとしたら、それなりに実装しないとできないかも?

http://msdn.microsoft.com/ja-jp/library/system.drawing.drawing2d.pathgradientbrush

例
const float circleRadius = 100;
using (GraphicsPath path = new GraphicsPath())
{
    float diameter = circleRadius * 2;
    RectangleF rect = new RectangleF(x, y, diameter, diameter);
    rect.Offset(-circleRadius, -circleRadius);
    path.AddEllipse(rect);

    using (PathGradientBrush brush = new PathGradientBrush(path))
    {
        brush.CenterColor = color;
        brush.SurroundColors = new Color[] { Color.FromArgb(0, color) };
        g.FillEllipse(brush, rect);
    }
}

※g は描画対象。x, y や color は適当に。

引用返信 編集キー/
■63631 / inTopicNo.3)  Re[2]: VBのペイントのエアスプレーを作る方法
□投稿者/ flip (2回)-(2012/09/17(Mon) 19:22:04)
2012/09/17(Mon) 19:22:55 編集(投稿者)

Azuleanさん、ありがとうございます!!透明度をきちんとすればエアスプレーに近いものになりそうです!
ただ使ったことない命令が多いので理解にはしばらくの時間が必要そうです。
すみませんが、できれば例のコードにコメントもお願いします。
引用返信 編集キー/
■63636 / inTopicNo.4)  Re[3]: VBのペイントのエアスプレーを作る方法
□投稿者/ Azulean (34回)-(2012/09/18(Tue) 00:01:30)
No63631 (flip さん) に返信
> ただ使ったことない命令が多いので理解にはしばらくの時間が必要そうです。
> すみませんが、できれば例のコードにコメントもお願いします。

クラスの説明、プロパティの説明、メソッドの説明を自分で調べましょう。
そういったことから自分の知識や調べ方を広げられるのではないかと思っていますので、あえてご希望のことはスルーします。
(うまく調べられなかったものは具体的にどれか、どうやって調べようとしたかを書いていただければ助言は書くつもりです)
引用返信 編集キー/
■63637 / inTopicNo.5)  Re[4]: VBのペイントのエアスプレーを作る方法
□投稿者/ Azulean (35回)-(2012/09/18(Tue) 23:54:56)
VB.NET なのに C# というのもイケズすぎたので VB.NET で書き直したものを貼っておきます。
(いや、単に失念していて C# で書いただけですが… orz)

Const circleRadius As Single = 5
Using path As New GraphicsPath
    Dim circleDiameter As Single = circleRadius * 2
    Dim rect As New RectangleF(x, y, circleDiameter, circleDiameter)
    rect.Offset(-circleRadius, -circleRadius)
    path.AddEllipse(rect)

    Using br As New PathGradientBrush(path)
        br.CenterColor = color
        br.SurroundColors = New Color() {Color.FromArgb(0, color)}
        g.FillEllipse(br, rect)
    End Using
End Using

※g は描画対象。x, y や color は適当に。

引用返信 編集キー/
■63638 / inTopicNo.6)  Re[5]: VBのペイントのエアスプレーを作る方法
□投稿者/ test (1回)-(2012/09/19(Wed) 00:15:09)
No63637 (Azulean さん) に返信
> VB.NET なのに C# というのもイケズすぎたので VB.NET で書き直したものを貼っておきます。
> (いや、単に失念していて C# で書いただけですが… orz)
>
> Const circleRadius As Single = 5
> Using path As New GraphicsPath
> Dim circleDiameter As Single = circleRadius * 2
> Dim rect As New RectangleF(x, y, circleDiameter, circleDiameter)
> rect.Offset(-circleRadius, -circleRadius)
> path.AddEllipse(rect)
>
> Using br As New PathGradientBrush(path)
> br.CenterColor = color
> br.SurroundColors = New Color() {Color.FromArgb(0, color)}
> g.FillEllipse(br, rect)
> End Using
> End Using
>
> ※g は描画対象。x, y や color は適当に。
解決済み
引用返信 編集キー/
■63658 / inTopicNo.7)  Re[6]: VBのペイントのエアスプレーを作る方法
□投稿者/ flip (3回)-(2012/09/23(Sun) 21:47:59)
わかりました!
教えてくださってありがとうございます!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -