トップページ⇒tech
991コメント328KB

Microsoft Silverlight 2.0 その3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/11/22(土) 12:33:33
Microsoft Silverlight
http://www.microsoft.com/silverlight/
MSDN Silverlight デベロッパー センター
http://msdn.microsoft.com/silverlight/
The Official Microsoft Silverlight Site
http://silverlight.net/

MSDN Silverlight ダウンロード (SDK, Silverlight Tools)
http://msdn.microsoft.com/silverlight/bb187452.aspx
CodePlex Silverlight Toolkit
http://www.codeplex.com/silverlight/

前スレ
http://pc11.2ch.net/test/read.cgi/tech/1210491703/
http://pc11.2ch.net/test/read.cgi/tech/1203891514/
0342デフォルトの名無しさん2009/02/22(日) 21:41:19
xamlファイルのコントロールに名前付けるとき、x:Name="hogehogeTextBlock"とか書くけど
純粋にName="hogehogeTextBox"だけでいいような気がするんだけど、x:って何?
0343デフォルトの名無しさん2009/02/22(日) 21:47:25
XML名前空間
0344デフォルトの名無しさん2009/02/23(月) 00:20:05
すみません。VWDExpressSP1とSilverlightToolkit for VWDExpressSP1を使ってるんだですが
basics:Calendarコントロールを使おうとしたところ、エラーになります。http://www.atmarkit.co.jp/fwcr/rensai2/silverlight2_02/silverlight2_02_4.html
のページで全部コピペしてやってみてもエラーがでます。
エラー文は↓です。
「エラー 2 アセンブリ 'System.Windows.Controls' が見つかりませんでした。
アセンブリ参照が失われていないか、また、プロジェクトとすべての参照先アセンブリがビルドされているかどうかを確認してください。
C:\Documents and Settings\hiromitsu\My Documents\Visual Studio 2008\Projects\SilverlightApplication1\SilverlightApplication1\BirthdayCountdown.xaml 1 27 SilverlightApplication1
」
エラー箇所は→です。xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"

で、System.Windows.controls.dllが見つかりません。。ですので、あるURLからダウンロードしたんですが、どのフォルダにおけばいいかわかりません・・

教えてもらえると助かります・・
0345デフォルトの名無しさん2009/02/23(月) 00:29:48
SilverlightToolkitに入ってるからダウンロードしたものは捨てろ
プロジェクトの「参照設定」を右クリックして「参照の追加」
.NETページのリストからSystem.Windows.Controlsを選んでOK
0346デフォルトの名無しさん2009/02/23(月) 03:14:57
>>345
ねれないから、覗いてみたら、回答が来てた。。マジうれしい。。
おかげでできました。

私は独学で金もないので、Web上のサンプルをやりはじめて、これからって時に
これで挫折しそうになったんで、もうやめようかと落胆してました。

道が大きく開けました。まじでうれしい・・とびっきりうれしいっす。ありがとうございました。
0347デフォルトの名無しさん2009/02/23(月) 03:16:09
その調子だとまたすぐにやめそう
0348デフォルトの名無しさん2009/02/23(月) 03:18:44
SilverlightってDllインポートできる?
0349デフォルトの名無しさん2009/02/23(月) 10:47:29
できません
ちなみにunsafeもダメ
0350デフォルトの名無しさん2009/02/23(月) 14:37:00
wpfがNETのセキュリティモデルで動くのに対して、
seilverlightは単一のセキュリティモデルで動く。
その分のチェックが不要になるので動作が軽量なのだが、
証明書やユーザーの許可などで権限を拡大する仕組みはない。
0351デフォルトの名無しさん2009/02/24(火) 15:27:33
silverlightを自分のホムページにくっつけてるんだけど、
ぐぐったら必要なthemeのdllとかクライアントにダウンロードされるって
ぐぐったらかいてあるんだけど、ホームページのサーバにはxapファイルしかアップロードしてないから
xapファイルにdllも含まれてるってことだよね?当たり前だけど・・

ちょっと確認したいもんで。。。
0352デフォルトの名無しさん2009/02/24(火) 16:25:24
普通はxapに全部まとめるものだけど、
xapと同じサイトにあるdllはその他のファイル類と同様に読み取ることが出来ます。
相対パスでたどれる範囲だったかな?
ローカルディスクからxapを直接起動した場合は
同じディレクトリにあるdllはロードできないので要注意。
0353デフォルトの名無しさん2009/02/24(火) 17:25:32
public class ijiri {
IntPtr ijirihandoru;
[DllImport("user32.dll")]
private extern static bool SetWindowText(IntPtr hWnd, string lpString);
[DllImport("user32.dll")]
private extern static IntPtr GetForegroundWindow();
public void capijiri(){
ijirihandoru = GetForegroundWindow();
SetWindowText(ijirihandoru, "キャプションいじり");
}}
ビルドは通るけど「メソッドへのアクセスに失敗」とか出て動かない…
xapにuser32.dll入ってるの確認したし、C#アプリならちゃんと動くの確認したし、ネット上にアップロードして確認したけど、動かない…
ホントにdllインポートできないんだ…
0354デフォルトの名無しさん2009/02/24(火) 17:51:32
語尾にA/Wのつく関数だったりして
0355デフォルトの名無しさん2009/02/24(火) 18:31:14
いやSilverlightではセキュリティ上DllImportは絶対無理
0356デフォルトの名無しさん2009/02/24(火) 20:44:58
そっか…
Silverlightでなにしよっかな…
0357デフォルトの名無しさん2009/02/24(火) 21:38:17
> しかしレガシーAPIがゆえにOpenTypeの色々な機能が使えず、
> 高度なアンチエアリアスなどで描画品質上げることもできないという状態に陥って
> しまっているから

これを見たOOo信者がMS Officeは描画品質が低い、斜めの線がギザギザで見るに堪えない、
これでは使い物にならない、などと言い出す予感がする。
0358デフォルトの名無しさん2009/02/25(水) 01:18:55
Calcの罫線で点線が引けるようになったら、話を聞いてやらないでもないな。
というか、OOoの開発する気のある奴の少なさは異常だ。
03593512009/02/25(水) 20:17:09
>>352
なるほど。詳しい解説ありがとうございます。
普通はやはりxapにまとまっているんですね。
お礼が遅れてすみません。silverlightはまだ情報源が少ないですね。質問に答えてくださり非常にありがたいです。

どうもありがとうございました。
0360デフォルトの名無しさん2009/02/25(水) 22:55:00
>>341
開発者ランタイム
http://go2.microsoft.com/fwlink/?LinkID=119972
をインストールすればおk。

Silverlight 2 GDRの一般ランタイムはRTW同様
http://go2.microsoft.com/fwlink/?LinkID=124807
からインストールできる。
0361デフォルトの名無しさん2009/02/25(水) 23:58:31
>>360
2.0.40115.0、無事導入完了。ありがと。
0362デフォルトの名無しさん2009/02/27(金) 00:21:31
Livestationどんな感じですか?
keyholetvと比べてどうですか?
0363デフォルトの名無しさん2009/02/28(土) 11:31:03
System.Linq.Xml.dllをアプリケーションと一緒に配布しないといけないのが納得いかない
DOM無いんだから普通使うと思う
Microsoft.VisualBasic.dllなんかサイズ倍あるんだから削れよ
0364デフォルトの名無しさん2009/03/02(月) 18:47:03
すいません。SL2でアプリ作ったんですが、FireFox3だと、
ファイルのパスに日本語が含まれる場合にローカルで実行できず、
デスクトップにも置けなくて困ってます。
あるフォルダ以下に
silverlight.js
SilverlightAppTestPage.html
ClientBin\SilverlightApp.xap
の3つのファイルを置いてるのですが、このフォルダのパスに日本語(全角・半角カナ)が含まれると、
SilverlightAppTestPage.htmlをFF3で開いても実行されない。StatusBarにDoneと表示されるだけです。
何か間違ってるか、あるいは解決方法はあるのでしょうか?
IE7やOperaでは問題なく実行できています。
開発環境はVS2008SE、実行環境はWinXP SP3です。
0365デフォルトの名無しさん2009/03/02(月) 18:51:16
日本語のパスが含まれない場所に保存すればいいじゃないか。
0366デフォルトの名無しさん2009/03/02(月) 19:32:36
IISでホストしても駄目か?
0367デフォルトの名無しさん2009/03/02(月) 22:13:30
レスありがとうございます。
IE7でもタブに「接続中」と表示されたまま固まってしまうことも多いようです。
Opera9.62では問題なく動作します。FireFoxのバージョンは3.0.6です。
Web.Configのdebug設定はfalseになってます。
SL2アプリの参照設定に追加したアセンブリはSystem.Xml.Serialization.dllとSL.Visifire.Charts.dllです。
例外出て止まるならまだありがたいんですが。

>>365
SL2全く知らない人も多いわけで、そういうReadmeをソースに添付しなきゃならんのはどうかと思うわけでして。
必要ならしますし、WEBで公開することが本来の目的なので問題ないのですが。

>>366
おっしゃる通り、パスがURIエンコードされてれば問題ないだろうと思ってたのですが、どうも違う原因のようです。
(IISは自分のPCにセットアップするのもホスティングサーバ探すのも面倒だし、
IISに依存しないのがSLのいいところだと思うんですけどね。)
SLアプリのプロジェクト作成時に、ホスティング用のWebページプロジェクトを自動作成するようにしてるんですが、
そのプロジェクトをスタートアップに設定して実行して、IISサーバのlocalhostで実行するようにしても動かない。
こっちはビルドで作成されたhtmlをIE7で開く分には問題ないですね。
ソリューションエクスプローラ上でHTMLを右クリックして、「ブラウザの選択」からOperaを選べば何も問題なく動くのですが。

何か他の問題の可能性もありそうですねえ。すみません。
Webページプロジェクトの設定いじったりしてないつもりなんですけどね。
0368デフォルトの名無しさん2009/03/03(火) 00:00:43
今月はいよいよMix09だな
SL3.0のpre-alphaくらいは出てくるかな
0369デフォルトの名無しさん2009/03/03(火) 12:53:16
Ubuntuのクラウドへの取り組みをマイクロソフトが警戒すべき理由
ttp://builder.japan.zdnet.com/news/story/0,3800079086,20389088,00.htm
0370デフォルトの名無しさん2009/03/04(水) 18:02:07
SP1が対象外だったから
SP2にバージョンアップしたけど
インストールすらできないXP HOMEです
0371デフォルトの名無しさん2009/03/04(水) 18:52:42
CPUがSSE/SSE2サポートしてないとだめぽ
0372デフォルトの名無しさん2009/03/04(水) 23:23:38
Athlonは対象外だったか…
�d
0373デフォルトの名無しさん2009/03/05(木) 22:35:04
TextBoxなんかの文字列を選択して右クリすると
コピーや貼り付けがなくて「Sliverlight」しか表示されないのは何なの?
0374デフォルトの名無しさん2009/03/05(木) 22:53:52
>>373
Ctrl+C, Ctrl+X, Ctrl+V のコピペは使えるけどな。
0375デフォルトの名無しさん2009/03/05(木) 22:54:54
Flashも同じだった気がする。
だからSilverlightもこれでいいというわけではないよ、念のため。
0376デフォルトの名無しさん2009/03/05(木) 22:58:40
Office 14はその辺どうやりくりするんだろうね
0377デフォルトの名無しさん2009/03/05(木) 23:03:49
>>375
Flashはコピーとか出るよ。
0378デフォルトの名無しさん2009/03/05(木) 23:49:28
Silverlightでも右クリックをカスタマイズしようと思えばできるよ。
http://silverlight.net/blogs/msnow/archive/2008/07/01/tip-of-the-day-14-how-to-right-click-on-a-silverlight-application.aspx

まあ、あまりスマートではないけど。
0379デフォルトの名無しさん2009/03/06(金) 00:08:33
>>378
ウインドウレスにするとIME使えないんじゃなかったっけ?
0380デフォルトの名無しさん2009/03/11(水) 11:08:00
DataGridにDBの内容を簡単に表示しようとしているのですが、
サンプルサイトご存じないでしょうか?
0381デフォルトの名無しさん2009/03/11(水) 12:42:27
>>380
自分で簡単と言ってるのに?

LINQ結果をDataGridのDataContextに渡せばOK。
03823812009/03/11(水) 12:54:28
>>380
ここ必見だよ!
ttp://silverlight.net/learn/videocat.aspx?cat=2
「Silverlight 2 チュートリアル」
0383デフォルトの名無しさん2009/03/11(水) 15:07:14
>>381
ありがとうございます、LINQについて調べてみます。

>>382
すいません、DBに関してのビデオが見つかりませんでした。
サーバーがDBからデータを吸い上げ、WCF経由で
データを渡す、ようなイメージを抱いているのですが・・・
0384デフォルトの名無しさん2009/03/11(水) 18:54:17
>>383
英語ではいちいちDataBaseなんて言わないんだよ。
データベースに関する話題はDataってとこにある。

それと、チュートリアルにもデータベースの話はある。
ttp://silverlight.net/internationallearn/default.aspx
03853812009/03/11(水) 19:17:46
>>383
日本語版チュートリアルは、>>384さんが示してくれた ttp://silverlight.net/internationallearn/default.aspx の
「チュートリアル 4: SQL データベース データを LINQ および WCF を使用して DataGrid に表示する」
がまさにそれです。
0386デフォルトの名無しさん2009/03/12(木) 10:12:21
>>384,385
チュートリアルとビデオで詳しく解説されてますね。

両方ともLINQを使っているようですが、他の方法はあるのでしょうか?
たとえばListデータを自前で作成して渡すとか。

そこでサンプルのようにListクラスにテストクラスを
詰めて渡してみました。

[DataContract]
public class Test
{
  [DataMember]
  public DateTime date1;

  [DataMember]
  public string no1;
}

すると SL でテストクラスの情報がわからないのか
送信したデータをDataGridのItemsSourceに入れたときにエラーがでます。

なぜLINQ to SQLを使わないかといいますと
DBがPostgresなのでサーバーエクスプローラに接続を追加できないのです。

SL にクラスデータをわかってもらうにはどうすればいいでしょうか。
0387デフォルトの名無しさん2009/03/12(木) 11:52:57
ソリューションエクスプローラから
サービス参照の更新を行うと、うまくデータが渡りました。お騒がせ致しました。
0388デフォルトの名無しさん2009/03/13(金) 11:49:46
DataGridの列をC#で追加してるのですが

  col = new DataGridTextColumn();
  col.Binding = new System.Windows.Data.Binding("NO");
  col.Header = "番号";
  dataGrid1.Columns.Add(col);

中央揃えや右揃えにするにはどうすればよろしいですか?
0389デフォルトの名無しさん2009/03/13(金) 15:24:30
こんな感じでいけました

   Style style = new Style(typeof(TextBlock));
   style.Setters.Add(new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right));
   Resources.Add("RightText", style);

   DataGridTextColumn col = new DataGridTextColumn();
   col.Binding = new System.Windows.Data.Binding("NO");
   col.Header = "No.";
   col.ElementStyle = Resources["RightText"] as Style;
   dataGrid1.Columns.Add(col);
0390デフォルトの名無しさん2009/03/14(土) 05:06:26
国内12社がマイクロソフト「Silverlight」による広告配信を開始:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20090313/326528/
0391デフォルトの名無しさん2009/03/14(土) 12:17:01
そういうふうに単なるメディアプレイヤーとして使う場合は
マネージコード使わずにjavascriptで書くのが普通なの?
0392デフォルトの名無しさん2009/03/14(土) 12:21:57
( ´ー`)シラネーヨ
0393デフォルトの名無しさん2009/03/14(土) 13:36:28
広告配信する側は、Flashでも問題なくできるこんなものにSilverlightを使う理由なんて
無いんだから、きっとMSからお金もらってるんだろうけど、広告なんてものはユーザが
見たいと思うコンテンツじゃないから、いくら金使っても普及には貢献しないだろ。

これだとユーザは、Silverlightをいれない方が広告が表示されなくて喜ぶじゃないか。

こんな企画を考えるやつも、それを通す上司もバカだと思う。
0394デフォルトの名無しさん2009/03/14(土) 15:29:10
>>393
おまいは何かしら興味を持ったSilverlightコンテンツを見た後、
毎回、SLコンテンツを非表示に設定するなり、SLをアンインストールしたりするのか?
仮にそうだとして、そういう人が多数派だとでも思っているのか?
普及に貢献するしないのユーザーサイドでの理由については、いろいろ考えられるわけで、
軽々しく他人をバカだのどうのと言わないほうがいいと思うよ
0395デフォルトの名無しさん2009/03/14(土) 19:52:33
Silverlight 3.0 for Great Business Apps
ttp://channel9.msdn.com/shows/The+Knowledge+Chamber/Brad-Abrams-Silverlight-30-for-Great-Business-Apps/

ブラウザの「戻る」ボタンでSilverlight内の遷移ができる
Silverlight内に複数のURLを持って直接移動可能

になるらしいよ
何気に一番重要な気がする
0396デフォルトの名無しさん2009/03/14(土) 19:59:04
要するに、XBAPをobsoleteするのが目指してるところか。
0397デフォルトの名無しさん2009/03/14(土) 20:12:18
>>393
結局、どれくらい盛り上げるかだと思うなぁ。
ユーザは深い所の差なんて気にしないので、広まり始めれば
「最近、あちこちでSLが使われてるなあ、Flashの後継なのかな?」
くらいの感覚で入っていくと思う。MSの課題は、提供者をどれだけ増やせるか。
ま、結局そこでFlashに対してのアドバンテージが必要になるんだけども。
0398デフォルトの名無しさん2009/03/14(土) 23:20:15
Flashがrealplayerのようにクソ化して自滅するか否かというのが
もっと重要だろ。
高シェアに胡座をかいていたらそうなりそうなヨケン。
0399デフォルトの名無しさん2009/03/15(日) 03:25:26
LINQ使うと、サイズがやたら増えるんで気に入らない。
50kB程度で済むアプリでは、さすがに使えない。
VBやMFCのランタイムみたいだ。

Flash置き換えの可能性としてあるのは、
いまだにAS1かAS2でやってるものを、更新するにあたって
AS3にではなく、Silverlightに乗り換えてしまいましょうという道。
MXとSLはパフォーマンス的には近いし、悪くはない選択肢である。
0400デフォルトの名無しさん2009/03/15(日) 05:25:54
SL2のマネージコードを簡単に難読化する方法ないですかね?
いや、隠蔽が目的ではなく簡単にダウンロードサイズを減らしたいだけなんですけどね。
できればSL用のDLL中に圧縮したDLLを入れるとか、そういうのは避けたいんですが‥。
0401デフォルトの名無しさん2009/03/15(日) 06:41:46
>>397
応用の利かないこむずかしいコードとかいらんから、もっと実例がほしい。
見た目やインタラクションがハデなアプリ書くには、XAML前提でのコード例やデザイン例の情報が乏しいし、
ビジネスアプリ書くには、VS標準搭載のコンポーネントの機能が(まだ)あまりにも貧弱すぎると思う。
それでもAJAXに全く興味がわかなかったへたれC#プログラマの俺には、SLはかなりありがたい。

あと、これはもう昔からのMSDNの悪い点だと思うのだが、(何ができるかの情報がとぼしいだけに)
何ができないのかについてはもうちょい簡単に参照できるようにしてほしい。
いちいちMSDNフォーラムとかで聞くのも探すのもめんどうだから、この板に期待してたり。

>>399
サードパーティのdllを梱包した場合でも、とたんにでかくなりますねえ。
System.Xml.Serialization.dllなんかもかなりでかいのかな?
クラスライブラリのビルド時にはすべてのクラスを梱包するアセンブリにして、
アプリケーションアセンブリのビルド時には全部internalアクセスに制限しつつ、
ILのコードから使われてないクラスを自動判定して、コンパクトなアセンブリ作れたらいいのに。
あれ?ありそうな気がしてきたw

>>400
XAPファイルのままダウンロードされるんじゃないんですか?
ZIP圧縮したDLLをXAPに梱包しても、サイズ変わらない気もしますが・・・。

いろいろ根本的に俺が間違えてたらすいません。
0402デフォルトの名無しさん2009/03/15(日) 10:17:06
リフレクション、動的なクラスロードが無ければ簡単だけどね
0403デフォルトの名無しさん2009/03/15(日) 11:46:26
>>402
Reflectionの本来の動作どおり、単にnull返してもいいし、
その型はアセンブリに入ってないって例外返してもいいのでは?
テストコード以外でどういう場合に、interfaceによるポリモーフィズムでなく、
Reflectionでなければならないのか興味ありますが。

XAPのサイズがでかくなるっていう元々の問題に対する別の方法として、
必要に応じてサーバから追加でdllをダウンロード(&インストール)できたとしても、
LINQのdllがでかすぎるといったことの解決にはなってないだろうし。
04043812009/03/15(日) 13:25:16
>>400
画面やページ遷移にあわせてxapを分割して構築。
そんでもってクライアント側で遅延ロードさせたりでOKじゃね?
あとLINQを動かす部分をWCFサービスにすればいいし。
04054002009/03/15(日) 14:33:06
>>401
xapファイルの中に入ってるDLLの話なんですけど、
クラス名等の文字列がそのまま入っているです。

>>402
どうやってます?試しにxapの中のDLLをNanDokuにかけてみたら
変換中に飛びました。orz

>>404
後出しで申し訳ないんですけど、分割とか本気で小さくしないと周らない
ってほどではなくて、もう少し簡単に小さくしたいなぁ、くらいなんですね。
現在、生成されたxapが約100k。文字列とか余分な情報を削減して
スリム化できればなぁと。
0406デフォルトの名無しさん2009/03/15(日) 14:37:31
>>404
> あとLINQを動かす部分をWCFサービスにすればいいし。
サーバ側で全データを管理する場合はいいと思いますが、
LINQ使うたびにクライアント側で処理中の中間データを
サーバに送信して結果返させるくらいなら、
素直に起動時にLINQ込みのXAPを落とすほうが良いように思う。
それとももっと違うLINQやWCFの使い方があるんでしょうか?

ローカルで生成したデータを、
ちょちょっとコネコネしたいときにもLINQ便利なんですよね。
0407デフォルトの名無しさん2009/03/15(日) 15:26:18
>>403
ベンダーのライブラリにリフレクションが使われているかわからないでしょ
自分のコードだけなら努力でなんとかなるが
Dotfuscatorでも実現できるがリフレクションは除外するかインターフェイス化するかだね
0408デフォルトの名無しさん2009/03/15(日) 15:28:13
>>405
Dotfuscatorの有料版で可能
値段上がったけどね
0409デフォルトの名無しさん2009/03/15(日) 15:31:14
CoreCLRのサイズを抑えるために個別の機能はリンクしろって思想はある意味しょうがない
あとはアセンブリの細分化と動的読み込みとかで工夫かな
0410デフォルトの名無しさん2009/03/15(日) 15:33:18
>>403
上3つ俺だけど
リフレクションで無くてはならないものを無くすのがSLの基本思想だね
データバインドは無理だけど
0411デフォルトの名無しさん2009/03/16(月) 09:47:17
Silverlightは Safari4 とか Google Chrome2 で使えないの?
Silverlightは Safari4 とか Google Chrome2 で使えないの?
Silverlightは Safari4 とか Google Chrome2 で使えないの?
Silverlightは Safari4 とか Google Chrome2 で使えないの?
Silverlightは Safari4 とか Google Chrome2 で使えないの?
0412デフォルトの名無しさん2009/03/16(月) 11:24:27
ブラウザにおさまらないほどのコントロール配置しても
IE8がスクロールバー有効にしてくれない
これはUserControlのプロパティで、スクロールバー出せるんでしょうか?
0413デフォルトの名無しさん2009/03/16(月) 11:45:13
このソフトをWinXP SP1で起動させる方法を教えてください
0414デフォルトの名無しさん2009/03/16(月) 16:21:56
インストールしたら、Flashと同じように、使っているウェブサイトを開くだけ。
0415デフォルトの名無しさん2009/03/16(月) 16:45:29
>>412
http://www.bluerosegames.com/SilverlightBrassTacks/post/Viewbox-in-the-Silverlight-Toolkit.aspx
http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html

こことか眺めてると (Viewboxあたりら辺とか)
ブラウザのスクロールバーを操作するような用途
に向けて作られてないように思える…

http://www.codeproject.com/KB/silverlight/Scroller.aspx
なるべく枠内にまとまるようにレイアウトしてゆくみたいな…

http://mohammadabtahi.wordpress.com/2008/12/09/zoomable-user-interface-zui-in-silverlight-using-viewbox-control/
0416デフォルトの名無しさん2009/03/16(月) 17:26:10
>>415
なるほど、スクロールが必要な設計にしなければよいわけですね
ありがとうございました。
0417デフォルトの名無しさん2009/03/16(月) 18:18:55
>>412
下記のコードで書いたようなことじゃないよね?
ScrollViewerはTabItemの中で使ったら、期待したような動作にならなかった記憶もある。

// Silverlightの新規プロジェクト作って、Page.xamlはそのままで、Page.xaml.csを下記のように書き換える
public partial class Page : UserControl
{
ScrollViewer _mainSV = new ScrollViewer();
StackPanel _mainSP = new StackPanel();
public Page()
{
InitializeComponent();
// Page.xamlのWidth="400"とHeight="300"を消去することに相当
this.Width = this.Height = double.NaN;
// Page.xamlの<Grid x:Name="LayoutRoot">が、ScrollViewerに置き換えられる
this.Content = _mainSV;
_mainSV.Content = _mainSP;
for (int i = 0; i < 5; i++)
{
_mainSP.Children.Add(new Button()
{
Content = i.ToString(),
Width = 800,
Height = 100,
});
}
_mainSV.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
}
}
0418デフォルトの名無しさん2009/03/16(月) 21:48:45
只今、Silverlightでモーダル動作のポップアップウィンドウを実装しようと格闘中。
Macっぽく背面をすべて半透過のダークシェードで覆ってやりたいんだが・・・
0419デフォルトの名無しさん2009/03/16(月) 22:48:56
Silverlightって積極的にdouble型使ってるけど、floatと比べて処理速度は
どんなもんなんだろ?誰か計った人いない?
なんとなくだけど、doubleを採用しているのは精度を高める為だけで、
速度のことは考えてないような‥。
0420デフォルトの名無しさん2009/03/16(月) 22:52:09
無駄口たたいてるヒマがあったら測れよ馬鹿が
0421デフォルトの名無しさん2009/03/16(月) 23:10:46
floatもdoubleも実際の演算のときは同じサイズの内部表現(CILのF型)に変換されて扱われるんじゃなかったっけ
0422デフォルトの名無しさん2009/03/16(月) 23:34:26
積極的にdouble型が使われているような箇所で処理速度の影響が問題になるのかと・・・
0423デフォルトの名無しさん2009/03/16(月) 23:43:02
long doubleよりもdoubleよりもshortや、64bit long longよりも32bit long/int、さらに16bit short、
さらに8bit charやビットフィールドが大好きな'80年代のアセンブラやC言語の組み込み君は
Z80でスーパーπでもやってろ!
0424デフォルトの名無しさん2009/03/17(火) 00:29:57
ずいぶん昔、たぶん80287のころから、floatとdoubleの処理効率は変わらん。
0425デフォルトの名無しさん2009/03/17(火) 00:37:29
float 100000個の演算とdouble 100000個の演算だと、時間的に変わってくるけどな
0426デフォルトの名無しさん2009/03/17(火) 00:47:26
86系CPUはむしろdoubleの方が早いんじゃなかったっけ?
ハードウェアがdoubleで計算してるから、
float使うとむしろ型変換の分のロスがあって。
0427デフォルトの名無しさん2009/03/17(火) 00:47:35
そりゃ、厳密に効率化すればDoubleのほうが速いだろうけど、
ほとんどの処理系で一緒になるでしょ。
0428デフォルトの名無しさん2009/03/17(火) 00:52:04
どうして実測しないんですか?
04294272009/03/17(火) 00:56:19
おれ?
今温泉旅館で酒飲みながら、PDAからここ読み書きしてるから。
かわりにやっといて。
0430デフォルトの名無しさん2009/03/17(火) 01:01:45
>>419
http://inomata.lolipop.jp/silverlight/mandelbrot.php
こういう目的で使いたいならfloatとdoubleの演算精度を比較してもいいが、
アプリがやることのほとんど全てが浮動小数点演算でもない限り、実行速度の差は無視できる。
まあ、そもそもそういうのが気になる人は、やっぱり自分でベンチマーク書くもんですw

ただSilverlightでは精度の高いSystem.Diagnostics.Stopwatchは使えなくて?、
50ミリ秒くらいの精度しかないDateTime.Nowしか使えなかった気がする。dll参照足りなかっただけかな??
3D描画とかをやりたいなら、Silverlight3でGPUアクセラレーションが使えるようになるのを待つべきかと思う。

>>421
Silverlightアプリ上では確認してないが、
.NETでのfloatとdoubleの演算精度は定義どおり違うものだし、
実行速度にもごくわずかに差は出ることは確認済み。
0431デフォルトの名無しさん2009/03/17(火) 01:02:45
>>427
いや、floatのほうが速いよ?常識だろw
0432デフォルトの名無しさん2009/03/17(火) 01:10:20
結局は要件次第だから
性能に影響無い箇所なら使いたいほうを使え
理論だけでコードが汚いやつはアホ
0433デフォルトの名無しさん2009/03/17(火) 01:11:37
仮にfloatにして処理が速くなったところで、それで浮いた実行時間は他に活用できるほどなのか?
0434デフォルトの名無しさん2009/03/17(火) 01:11:54
>>426
と思ったらそういう誤解か・・・。
SSE命令にまで自動的にJITコンパイルしてくれるので、floatを毎回doubleに型変換したりとかはない。
もちろん、cosやsinの計算とかをいちいちfloatに格納して、それをまたdoubleに戻して別の演算みたいな、
明示的な型変換がコード中にたくさんあれば、単にdoubleで全部計算するよりも遅くなることはありうる。
ソースコードに対しては忠実な動作をするからね。
0435デフォルトの名無しさん2009/03/17(火) 01:14:00
GUIコンポーネントのプロパティの型に出てくるようなdoubleは、当然doubleのまま使うべき。
そんなもん実行速度の差が出るわけないです。
0436デフォルトの名無しさん2009/03/17(火) 01:15:59
まああれだ。結論だけ言っておくと、心配なら全部doubleで書きなされ。
実行速度の差は無視できるが、演算精度の差は無視できないから。
0437デフォルトの名無しさん2009/03/17(火) 01:19:14
>>431
え、まじ?
なんでそんなことになるの?
ちょっと不思議。
0438デフォルトの名無しさん2009/03/17(火) 01:20:09
ソフト業界には、「処理効率を少しでも上げるため」と言って、残業や休出してまでカリカリに
チューニングしたり、勝手に既製のライブラリまでカスタマイズして納期を遅らせるマニアな
香具師が居るけど、会社や顧客にとってはそいつに払う残業代や休出手当てと納期遅れの方が
深刻な問題なんだよな。
0439デフォルトの名無しさん2009/03/17(火) 01:23:05
>>437
動画処理や3D画像描画の、いわゆるマルチメディア関連の演算はほとんどfloatの精度ですむわけだ。
だからfloat演算専用のハードウェアが乗ってて、それを実行するのがSSE命令。
http://ja.wikipedia.org/wiki/Streaming_SIMD_Extensions
0440デフォルトの名無しさん2009/03/17(火) 01:45:41
>>438
わかる
それでソースが汚いと最悪だわ
そんなことよりボトルネックは他にあるだろ
0441デフォルトの名無しさん2009/03/17(火) 01:56:32
>>439
Mono.SIMDでも使っとけばいいと思うよw
■ このスレッドは過去ログ倉庫に格納されています