| 2008年08月19日 20:27 | |
|---|---|
| タイトル | ひゃっほう!!!!!!!!!! |
| 本文 | トランス状態だぜwwwwwwwwwwwwwwwwwwwww トランス脂肪酸は嫌われてるみたいだけど でもそんなの関係ねぇwwwwwwwwwwwwwwwww
/// <summary>
/// リンク付きテキストを指定されたarea内に描画します。
/// ただしheightは無視します。
/// </summary>
/// <param name="g">描画グラフィック</param>
/// <param name="texts">描画リンクデータの配列</param>
/// <param name="area">描画する大きさとか位置とか</param>
/// <param name="draw">計算だけか、描画するのか</param>
/// <param name="height">描画した後の高さ</param>
/// <returns>リンク描画したエリアたち</returns>
private LinkRectangles[] DrawWrappedLinkText(Graphics g, LinkTextData[] texts, Rectangle area, bool draw, out int height)
{
Rectangle cline = area;
int lines = 1;
int MaxHeight = 0;
List<Rectangle> drawAreas = new List<Rectangle>();
List<LinkRectangles> LinkRects = new List<LinkRectangles>();
foreach (LinkTextData ltd in texts)
{
String LinkTextBuffer = ltd.LinkText;
int prevlen = -1; //前の長さを格納しとく
{
//現在の行の高さを取得して、一番大きければMaxHeightへ
//スコープの関係上{}でくくる
int lh = GetRealStringSize(ltd.LinkText, g).Height;
if (lh > MaxHeight) MaxHeight = lh;
}
drawAreas.Clear();
while (LinkTextBuffer != "")
{
String drawText = LinkTextBuffer;
Size charsize = GetRealStringSize(drawText.Substring(0, 1), g);
if (cline.Width < charsize.Width)
{
//新しい行にする
VerticalShift(ref area, charsize.Height);
cline = area;
lines++;
}
//前の長さを参考にすることができるかな?
if (prevlen != -1 && drawText.Length > prevlen)
{
//できそう
drawText = drawText.Substring(0, prevlen);
}
else
{
//初っ端なので概算する
double aboutlen = (double)GetRealStringSize(drawText, g).Width / (double)Width;
if (aboutlen > 1.0) //drawTextの方が長い場合で
{
//およそaboutlen倍textが長い
//->なら1/aboutlen倍すればいいじゃん!
drawText = drawText.Substring(0, (int)(drawText.Length / aboutlen));
}
}
//処理高速化のため方向によって分ける
if (GetRealStringSize(drawText, g).Width > cline.Width)
{
//縮める方
while (GetRealStringSize(drawText, g).Width >= cline.Width && drawText.Length > 1)
{
drawText = drawText.Substring(0, drawText.Length - 1);
}
}
else if (GetRealStringSize(drawText, g).Width < cline.Width)
{
//伸ばす方
while (GetRealStringSize(drawText, g).Width < cline.Width && LinkTextBuffer.Length - drawText.Length > 1)
{
drawText = drawText + LinkTextBuffer.Substring(drawText.Length, 1);
}
//だからってはみ出しちゃ意味無いよね!
//最悪でも1文字でしょ!
if (GetRealStringSize(drawText, g).Width > cline.Width)
drawText = drawText.Substring(0, drawText.Length - 1);
}
//リンクテキストのバッファを更新しとく
LinkTextBuffer = LinkTextBuffer.Substring(drawText.Length);
if (draw) //描画するの?
{
if (ltd.IsLink)
{
using (Font f = new Font(Font, FontStyle.Underline))
DrawText(drawText, g, cline, LinkColor, f);
}
else
DrawText(drawText, g, cline, TextColor);
}
//リンクだったら描画領域をListに追加しとく
if (ltd.IsLink)
{
drawAreas.Add(new Rectangle(cline.Location, GetRealStringSize(drawText, g)));
}
prevlen = drawText.Length;
HorizontalShift(ref cline, GetRealStringSize(drawText, g).Width);
}
if (ltd.IsLink)
LinkRects.Add(new LinkRectangles(ltd, drawAreas.ToArray()));
}
height = lines * MaxHeight;
return LinkRects.ToArray();
}
これはこの部分になりました。
|
コメントをつけるためにはログインが必要です
まだユーザー登録していない方はこちらからユーザー登録してください。
| 日時 | 題名 | 本文(省略) |
|---|---|---|
| 2008/09/03 00:02 | ( ゚∀゚)o彡゜リニア!リニア! | 長い間 「未来の超特急」 「実現しない」 とか言われてたリニアですが、ついに国が動き... |
| 2008/09/02 23:50 | さて。 | 韓国経済が10日あたりに峠を迎えるそうです。 また破綻するのかなぁ。 そして俺... |
| 2008/08/30 20:25 | なんだかなぁ。 | サイト凍結するのすら面倒臭い |
| 2008/08/27 19:41 | Google Suggest | ですよねー。 |
| 2008/08/25 18:56 | 二名様ごあんな~いっ♪ | 仲悪いのは分かったから他所でやってくれんかなぁ。。。 つか何が起きてるの?両者とも... |
| 2008/08/21 21:45 | 政治の問題点。 | 上層部がジジババすぎる。 あとは好きなだけ私腹肥やしてこの世とオサラバっすか。 |
| 2008/08/19 20:27 | ひゃっほう!!!!!!!!!! | トランス状態だぜwwwwwwwwwwwwwwwwwwwww トランス脂肪酸は嫌われてる... |