投稿者 ALPHA  (社会人) 投稿日時 2016/11/7 20:49:33
始めてまして。
まだ3流PGですが、2流へのステップアップをとりあえず目指しています。

VB(VS2013)で開発しているのですが、
・スプレッドなるアドインを使っての開発
・一部の画面は、図形のレイアウトも有り
と、今までに経験が無く、ちょっと厄介な感じです。。。

今、一部の画面、簡単に言うとVisioっぽい画面を作るのに調査しているのですが
工数も無くなって来た為、悩んでいます。

色々調べて、公式サイトで、
『「Customシェイプクラスの利用により、.NET Frameworkより提供されている
System.Drawing名前空間の各機能を用いた独自のシェイプオブジェクトを作成することができます。
また、作成されたオブジェクトはSPREADより提供されている各シェイプと同様に制御することが可能です」』
という記載を見つけ、下記の★サンプルコードである程度複雑な図形も可能だと分かりました。

ただ、フローチャートで良く見る、四角の両端が二重線になっているような記号のように
オリジナルの記号を作りたいようです。
(正直、Visioでやってよーと思います)

とにかく、System.Drawingについての知識が皆無である為、
下記のソースの「gpath」に、複数の図形を組み合わせたり、図形の一部を変更したものを渡して、
カスタムシェイプというものを作るにはどのようにすれば良いのか良く分かりません。
(具体的には、「System.Drawing.Point」って、線を繋いで図形にしているようですが
その線の一部を変更するには?という疑問などです)

有識者の皆様、ご回答宜しくお願いします。

★サンプルコード(このように稲妻のような図形が出来ます)


 Private Sub Form1_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles MyBase.Load

   'グラフィックを作成します 
   Dim pts As System.Drawing.Point() = {New System.Drawing.Point(25, 0), _
               New System.Drawing.Point(0, 50), _
               New System.Drawing.Point(20, 50), _
               New System.Drawing.Point(5, 100), _
               New System.Drawing.Point(40, 40), _
               New System.Drawing.Point(20, 40), _
               New System.Drawing.Point(40, 0), _
               New System.Drawing.Point(25, 0)}

   Dim gpath As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath
   gpath.AddPolygon(pts)

   'カスタムシェイプオブジェクトを作成します 
   Dim pso As New FarPoint.Win.Spread.DrawingSpace.CustomShape
   '作成したグラフィックを設定します 
   pso.Shape = gpath
   '各属性を設定します 
   pso.SetBounds(120, 10, 120, 120)
   pso.BackColor = Color.Red
   pso.AlphaBlendBackColor = 90
   pso.ShadowColor = Color.Blue
   pso.AlphaBlendShadowColor = 90
   pso.ShadowDirection = FarPoint.Win.Spread.DrawingSpace.ShadowDirection.Right
   pso.ShadowOffset = 5

   FpSpread1.ActiveSheet.AddShape(pso)