Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
文字サイズの算出
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30320#CommentId83206
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2018/4/10 14:14:36
> 追加情報と画像のサンプルのご提示ありがとうございました。
ワードアートと違って、急激なカーブへの対応は含まれていないので、あくまでも参考という事で…。
また、私のコードは数文字ずつ切り出して GraphicsPath に隣接描画する方法で、
るきおさんのは、文字列を GraphicsPath に変換してからパス全体を円形に歪める方法ですね。
前者だと、文字列の分割によってカーニングに問題が出ますし、
後者は変形によってフォントに歪みが生じることになります。
> 各文字のサイズと表示位置を算出したいのですが、
端点と中点の問題もあったりします。これについては、MSDN Magazine 2008年12月号の
「基礎 WPF でパス上にテキストをレンダリングする」
の記事で、美しくレンダリングするための技法が解説されています。
https://msdn.microsoft.com/ja-jp/magazine/ee310108.aspx
(VB + WinForms ではなく C# + WPF なので、そのまま適用できるものではないですが)
> 使用している.NET は 4.6.1 です。
であれば System.ValueTuple のかわりに System.Tuple が使えます。(.NET 4.0 以降)
これなら追加のライブラリも不要です。
'Dim line = (New PointF(20, 20), New PointF(200, 200))
Dim line = Tuple.Create(New PointF(20, 20), New PointF(200, 200))
'Dim pos As (i As Integer, p As PointF) = (0, p.PathPoints(0))
Dim pos = Tuple.Create(0, p.PathPoints(0))
'pos = g.DrawString(txt, f, b, pos.i, pos.p, p.PathPoints(iTo), above)
pos = g.DrawString(txt, f, b, pos.Item1, pos.Item2, p.PathPoints(iTo), above)
'Public Function DrawString(…) As (iNext As Integer, pNext As PointF)
Public Function DrawString(…) As Tuple(Of Integer, PointF)
'Return (iFrom, pFrom)
Return Tuple.Create(iFrom, pFrom)
> またライセンスについて色々と記載があったので諦めました。
System.ValueTuple ですよね。MIT ライセンスなので、比較的緩いですよ。
System.ValueTuple 自体はオープンソースですが、
再利用はオープンソースかどうかを問わず認められています。
https://wisdommingle.com/mit-license/
似たようなライセンス形態としては、Ms-PL ライセンスと言うものがあります。
https://blogs.msdn.microsoft.com/shintak/2012/09/08/microsoft-public-license-ms-pl/
ライセンス話のついでに書いておくと、.NET Framework のソースコードは
下記で公開されており、こちらは非常に制限の強い Ms-RSL ライセンスとなっています。
(ソースコードの参照のみが許可されている)
https://referencesource.microsoft.com/