LINQ to Objectsの結果をDataGridViewに表示

blog20110912-LinqToObj

LINQ to ObjectsLink でクエリから得た結果をお手軽にDataGridViewに表示する方法(Visual Studio 2010)。ポイントは、

  • 検索対象となるクラスが保持する値のうち、DataGridViewで表示したいものをプロパティとして宣言する。{get; }を付けないとDataGridViewには表示されない。読み取り専用にしたい場合は{get; private set;}にする。({get;}だけだと初期化不能になる)
  • クエリで得られた IEnumerable<T>をToList()で変換して、DataGridView.DataSourceにセットする

列名もプロパティ名が自動的に反映されます。デバッグ目的にはとっても便利。

今まで仕事上Visual Studio 2005を使っていたので、2008から加わったLINQは最近知りました。こんな便利なものができていたとは…Microsoftやりたい放題だな。

[参考]Linq to object with DataGridView (C# Corner)Link

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LINQ2Objects
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            List<TouristResort> TouristResorts = new List<TouristResort>();
            TouristResorts.Add(new TouristResort("Fuji", 120.7, LINQ2Objects.Location.Mountain));
            TouristResorts.Add(new TouristResort("Enoshima", 60.1, LINQ2Objects.Location.Ocean));
            TouristResorts.Add(new TouristResort("Atami", 95.1, LINQ2Objects.Location.Spring));
            TouristResorts.Add(new TouristResort("Aso", 599.3, LINQ2Objects.Location.Mountain));
            TouristResorts.Add(new TouristResort("Nichinan", 620.4, LINQ2Objects.Location.Ocean));
            TouristResorts.Add(new TouristResort("Beppu", 598.7, LINQ2Objects.Location.Spring));

            IEnumerable<TouristResort> subTouristResorts =
                from TouristResort aTouristResort in TouristResorts
                where aTouristResort.Distance<600
                orderby aTouristResort.Distance descending
                select aTouristResort;

            dataGridView1.DataSource = subTouristResorts.ToList<TouristResort>();
        }
    }

    enum Location
    {
        Mountain,
        Ocean,
        Spring
    }

    class TouristResort
    {
        public string Name { get; private set; }
        public double Distance { get; private set; }
        public Location Loc { get; private set; }

        public TouristResort() { }
        public TouristResort(string name, double distance, Location loc)
        {
            Name = name;
            Distance = distance;
            Loc = loc;
        }
    }
}

— posted by mu at 09:32 pm   commentComment [0]  pingTrackBack [0]

PSO2α終了

blog20110828-PSO2AlphaCutIn

操作性に戸惑いつつも、色々と満喫。チャット機能の楽しさは健在ですな。1時間以上カットイン機能(発言噴出しと一緒にキャラの顔画像が出る)で遊んでしまいました。入力に対してどう表示をされるか試していたつもりなのですが、まぁこんな発言していては自キャラが綺麗に見える条件を探すナルシストと言われてもしょうがないw

この機能自体はPSULink から存在していたのですが、PSO2のは動きますぜ。踊ったり泣き崩れながら喋れば、カットイン画像にも反映されます。使い方に幅が広がりそうで期待です。

ロビーでは動画も表示されていました。今回はPSO2のPRを繰り返し表示するだけでしたが、ライブでなくとも動的に内容変えられるなら動画配信会社と組んでなにかやれそうだなぁ。


— posted by mu at 06:55 pm   commentComment [1]  pingTrackBack [0]

PSO2α開始直前

blog20100818-PSO2Start

とりあえず始まったらオラクル(なんかラリー・エリクソンを思い出してイヤw)行ってきます。最初にパッチダウンロードで1時間を予想w

えっと、今後内容をここに書く予定はございませんので、悪しからず…

[2010/8/21 追記] うん、このGPULink じゃせっかくのグラフィックが台無しだ。

— posted by mu at 12:07 am   commentComment [0]  pingTrackBack [0]

善意の無いソフトウェア削除ツール

同じこと考えている人Link はやっぱりいたもので。というか、いっぱいいそうだな。

英語版Windows使っていると、悪意のあるソフトウェア=Malwareの一語。訳す人も苦心の末とは思いますが。

[2011/8/25 追記] Malwareの訳を訂正。今頃気づくw

— posted by mu at 01:26 am   commentComment [0]  pingTrackBack [0]

ラプター一応完成

blog20110814-3DCG_Raptor_c

前回Link より更に2週間経過。当初描く予定がなかったアフターバーナーには5日間かかり、お絵描きの最終段階恒例堂々巡りの微修正に入りだしたのでここで一区切り。

背景をつけると一気に雰囲気が出ますね。前回参考にした雲の描き方Link はやはり処理が重すぎたので画面隅の数個に止め、雲海の大部分は一枚板で描くことにしました。

具体的にはBlenderArtists.orgのVolume Render in 2.5...Link にあるHere's a tutorial I made on somewhat how to do it with nodes....とされるビデオLink を参考に(Blender 2.5以降必須)。

  1. 雲の形状となるメッシュを作成。形は角を取った直方体とか凸凹つけた楕円球体をSubsurf modifierで滑らかにしたもの。今回の場合は巨大な直方体(雲海は直方体の一面)
  2. メッシュにマテリアルを作成、そこにテクスチャを追加し雲模様(Cloud)テクスチャを設定する。
  3. レンダリングすると凹凸の少ないのっぺりとした雲になりやすい。
    • ビデオではNode Editorでテクスチャを設定、Cloud設定をHardにした上、MathのGrater thanでしきい値以下の暗い部分を切り捨て(真っ黒に)している。
    • ただししきい値を高めに取ると凸凹がくっきり出る反面、レンダリング結果にノイズが乗りやすい(しきい値からいきなり黒になるため?)。雲海に横縞が乗っている画像例Link
    • 私の場合は元のCloudテクスチャをMathで二乗した上で低いしきい値を設定しました。具体的にはしきい値に0.3を指定していたのを、二乗したテクスチャにしきい値0.09(=0.3の二乗)を設定することで、同じエリアを切り捨てつつしきい値と黒との差を小さくしてます。
  4. マテリアル設定に戻り、マテリアルタイプとしてVolumeを設定。DensityとDensity Scaleは勘と試行錯誤で決定。雲が暗くなってしまう場合は以下の設定をいじる(明るすぎる場合は逆を)
    • Reflectionを大きくする
    • Scatteringを小さくする
    • LightingをShadelessにする
  5. ライトとカメラの設定をお忘れなく。太陽光の他に空色で上からのHemi、地面や海の色で下からのHemiを付けるといい感じです。

アフターバーナーも基本は同じでVolumeマテリアルを使用、散乱(Scattering)も反射(Reflection)もしない(=0)一方、自らオレンジ色に光るEmissionを設定しています。

[参考]

[SVGAサイズ]

— posted by mu at 08:53 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0184 sec.
prev
2024.11
next
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30