1
Access グレーアウト アイヤー。AccessのマクロでCSVのインポートを行いたいのですが、通常のアクションカタログの中にはないマクロを利用したいのにすべてのアクションを表示がグレーアウトしています。 結論 どうしてもすべてのアクションを表示を有効な状態にする事ができなかったので新しいファイルを作って、全てのオブジェクトをコピーしました。オブジェクトのコピーはドラッグアンドドロップで実行できます。 環境 Access2016 ファイル accdb なぜか? はっきりと分からないのですが、このAccessファイルは5年以上前に作ったものです。Access2010の頃に作成されたファイルを利用しているので、もしかしたら、それが原因なのかも。Access2010で開いたらすべてのアクションを表示も出るかもしれません。
Jul 20, 2018
閲覧総数 926
2
HLS配信にしてから、リアルタイムでアクセス状況を知るのが難しくなりました。 RTMP配信の時は、nginx rtmp-module に、テンプレートがあって、これを使って接続拠点数、回線帯域をリアルタイムに監視する事ができたのですが、HLS配信ではこの方法はとる事ができずです。 そこで、リアルタイムwebログ解析ソフトGoAccessを利用してwebレポートを吐けるようにしました。 このGoAccessのwebレポートから、情報が分かりやすいようにカスタマイズしてみます。 goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/dashbord/report.html --real-time-html --log-format=COMBINED --hour-spec=min --date-spec=hr ユニークアクセス数 UNIQUE VISITORS PER DAY - INCLUDING SPIDERS このパネルには、ヒット数、ユニークビジター、日付ごとの累積帯域幅などの指標が表示されます。同じIP、同じ日付、同じユーザーエージェントを含むHTTPリクエストは、一意の訪問者とみなされます。デフォルトでは、Webクローラ/スパイダが含まれています。 オプション --date-spec = hr をつける事で、時間レベルでユニークアクセス数の解析ができるようになります。1日だと、リアルタイム性にかけますが、時間ごとにすると、まだ妥当な数字になってきます。 10:00 - 11:00 の間のユニークアクセス数が、51という事になります。ただ、この中には、m3u8以外のファイルにアクセスした可能性や、クロールなど何か他の要因でのアクセスも数に含まれるため若干多めだと考えていた方が良い値です。 TIME DISTRIBUTION このパネルには、1時間ごとのレポートが表示されます。このオプションでは、24時間分のデータポイントが1日の1時間ごとに表示されます。 オプション --hour-spec = min 10分ごとに表示する事ができます。10分ごと帯域幅表示ができるので、これを600秒(10分)で割ると、1秒当たりのGiBが分かります。また、時間の表示が独特です。10:5と表示されると、これは10:50の事を表します。 12:50の値は、7.31GiBなので、0.012GiB/sのデータ帯域幅を利用しているという事になります。ざっと12MB/sで、96Mbpsという事になります。※GiB(ギビバイト)換算していない簡易計算
Jan 7, 2018
閲覧総数 493
3
Googleスプレッドシートで串刺ししたい要件が出てきました。 どうも、Excelライクに=を入れて、他のシートを参照してって事はできないみたいです。 計算式を自分で入力する必要があります。 シート名とセルの参照 ’シート名’!セル名 =SUM('シート名1'!C3,'シート名2'!C3,'シート名3'!C3,'シート名4'!C3) こんな感じで各シートのセルを指定します。これ手入力する必要があります。 ちょっと面倒ですけど、串刺し計算可能です。
Apr 28, 2016
閲覧総数 31030
4
WPFでlistbox上にボタンを並べ、そのボタンが押された時にどのボタンが押されたかコード上で取得する Xaml listboxにボタンを配置 <ListBox x:Name="l_listbox" HorizontalAlignment="Left" Height="289" Margin="0,10,0,0" VerticalAlignment="Top" Width="220" BorderThickness="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> <ListBox.ItemsPanel> </ListBox.ItemsPanel> <ListBox.ItemTemplate> <Grid Width="210" Height="60" > <Button.Effect> <DropShadowEffect/> </Button.Effect> <Button.Background> </Button.Background> </ListBox.ItemTemplate> C#コードで リストボックスに並べるボタンの元になるデータを作成 public MainWindow() { InitializeComponent(); List items = new List(); for (int i = 0; i < 30; i++) { items.Add(new TestItem(i + ":Test")); } l_listbox.ItemsSource = items; slider.Maximum = 30; } Listboxに渡すためのアイテムクラス public class TestItem { public String ButtonContent { get; set; } public TestItem(String button_name) { this.ButtonContent = button_name; } } クリックイベントで、ボタン情報をもらう private void B_test_Click(object sender, RoutedEventArgs e) { var o = (TestItem)((Button)sender).Tag; MessageBox.Show(o.ButtonContent.ToString()); } Xamlコードのポイント Tag="{Binding}" で、ボタン情報を紐づけておき、C#コードにて var o = (TestItem)((Button)sender).Tag; 値を引き出す。
Aug 3, 2016
閲覧総数 2094
5
ログイン後スタート画面が表示されデスクトップ画面が表示されない時 http://www.atmarkit.co.jp/ait/articles/1302/22/news054.html この操作で、デスクトップ画面が表示できました。
Dec 15, 2017
閲覧総数 522
6
C#で、外字ファイルをシステムインストールしていないパソコンで表示させたい。 WPFだと外字を組み込み表示上は何とかなったのだが、印刷しようとするとどうしても□が出てくる。 さて、どうしたものか。 色々と調べまわってみたところ、以下のようにコードを書くと、印刷時に外字が出てくる事が分かった。これでシステム的な紐づけがされるのか?良く分からないのだけど、外字ファイルを指定してフォントファミリーに対する。実際に描画する時には全く違うフォントを指定しているのだが、ちゃんと外字が印字されるようになった。理屈が分からずちょっと気持ち悪いが。 ※プログラムと同じディレクトリにEUDC.TTEファイル(外字ファイル)を置く事 //http://dobon.net/vb/dotnet/graphics/privatefontcollection.html //http://d.hatena.ne.jp/EnogunoCap/2xxx-xxx-xxxxx/124xxx-xxx-xxxxx //PrivateFontCollectionオブジェクトを作成する System.Drawing.Text.PrivateFontCollection pfc = new System.Drawing.Text.PrivateFontCollection(); //PrivateFontCollectionにフォントを追加する pfc.AddFontFile(@"EUDC.TTE"); //使いたいフォント名を見つけてFontFamilyオブジェクトを変数にセット FontFamily addedFont = null; foreach (FontFamily ff in pfc.Families) { if (ff.Name == "EUDC") { addedFont = ff; break; } } //明朝で印刷指定してもちゃんと、外字が出てくる e.Graphics.DrawString(TextValue, new Font("MS 明朝", FontSize), Brushes.Black, hidariyohaku + 40, dan_2 - 25, new StringFormat()); 外字のフォントはゴシック指定になっていた。
Mar 15, 2017
閲覧総数 1274
7
今まで、HLSのPlayerは、Video.jsを利用していました。 有名どころでいくと、flowplayer や、jwpalyerがあります。ただ、こちらのPlayerは有料なので無料で良いものがないか探してみました。 Shaka Player 名前が宗教チックですが、Googleが提供しているOpenSouce Playerとの事で機体が持てます。 https://github.com/google/shaka-player Chrome,Firefox,Edge,IE,Operaに対応しています。 HLSとしては、VODでもLiveでも配信可能です。 チュートリアル https://shaka-player-demo.appspot.com/docs/api/tutorial-welcome.html Debianへのインストール方法 sudo apt-get update sudo apt-get install git python2.7 default-jre-headless npm NPNのnode情報を最新版に更新します。 # Upgrade npm and node to the latest versions sudo npm install -g n sudo n stable sudo npm install -g npm Shaka Playerのソースコードを取得します。 git clone https://github.com/google/shaka-player.git cd shaka-player ライブラリをコンパイルします python build/all.py ドキュメントを作成します python build/docs.py コンパイルした成果物を配信できる位置にコピー shaka-player/dist# mkdir /usr/local/nginx/html/live/shaka shaka-player/dist# cp shaka-player.compiled.js /usr/local/nginx/html/live/shaka/ 基本的な使い方 https://shaka-player-demo.appspot.com/docs/api/tutorial-basic-usage.html <!-- Shaka Player compiled library: --> <!-- Your application source: --> // myapp.js var manifestUri = '//storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd'; function initApp() { // Install built-in polyfills to patch browser incompatibilities. shaka.polyfill.installAll(); // Check to see if the browser supports the basic APIs Shaka needs. if (shaka.Player.isBrowserSupported()) { // Everything looks good! initPlayer(); } else { // This browser does not have the minimum set of APIs we need. console.error('Browser not supported!'); } } function initPlayer() { // Create a Player instance. var video = document.getElementById('video'); var player = new shaka.Player(video); // Attach player to the window to make it easy to access in the JS console. window.player = player; // Listen for error events. player.addEventListener('error', onErrorEvent); // Try to load a manifest. // This is an asynchronous process. player.load(manifestUri).then(function() { // This runs if the asynchronous load is successful. console.log('The video has now been loaded!'); }).catch(onError); // onError is executed if the asynchronous load fails. } function onErrorEvent(event) { // Extract the shaka.util.Error object from the event. onError(event.detail); } function onError(error) { // Log the error. console.error('Error code', error.code, 'object', error); } document.addEventListener('DOMContentLoaded', initApp); 注意 1.Chromeでは再生できない 再生する方法もあるみたいだけど、上記だけではダメらしいです。Edgeはネイティブでtsファイルを再生できるので、Edgeで試すと大丈夫でした。Chromeで再生できるところまでもっていくにはちょっと骨が折れそうなので断念しました。 2..m3u8ファイルができる(tsファイルができる)フォルダに、リファラーで制限をかけていると、Edgeでも再生できなくなる。この事から、shaka playerのm3u8再生は、ブラウザネイティブで直接そのm3u8を見に行くような仕様になっているのではないかと思います。 Nativeで、tsファイルの再生に対応しているブラウザでのみ利用可能 Egdgeか、ChromeCastだそうです。Chromeでは利用できない https://github.com/google/shaka-player/issues/851 https://github.com/google/shaka-player/issues/1262
Feb 15, 2018
閲覧総数 1587
8
Digitalsignagepress Lite WordPressをデジタルサイネージ目的でごちょごちょやってみました http://technical.live-on.net/archives/1795 が、プラグインであるんですね。そんなんだったら、プラグイン使った方がいいじゃないと試してみました。 https://wordpress.org/plugins/digitalsignagepress-lite/ 10分で美しいデジタルサイネージが作れますといううたい文句ですがどうなんでしょう。 簡単なつかいかたはこちらに紹介がありました。 https://youtu.be/T_kd2mg1NYk 無料で使える範囲はこちら 画面管理 スライドで写真を撮る スライド内の異なるフォント、サイズ、色のテキスト 画面の自動ライブアップデート デジタルサイネージダッシュボード レイアウトテンプレートが含まれています デジタルサイネージWPテーマを含む 使い始めるにはちょっとだけコツが必要でした。 Install Digital Sinage Theme でダウンロードするのですが、これが自分が利用しているクライアントパソコンにダウンロードされてしまいます。ZIP形式でダウンロードされるので、これを解凍し、 wp-content/themes の中に突っ込みます。 その後 Digital Sinage Press Theme を有効にします。 次に Playlistを作成し、 ALLOW OTHER DEVICE TO USE THIS URL をクリックし、 Enter these URLs into your device to see this playlist on your device ここに表示されているURLをクリックするとスライドショーが始まります。 一番最初に表示されたデバイスが割り当てられるようです。デバイスごとに分けてサイネージが表示できるようになります。
Dec 3, 2017
閲覧総数 514
9
ObservableCollectionで定義したコレクションの中の値を検索したいと思います。 ObservableCollectionの場合 Enumerable.FirstOrDefault メソッド (IEnumerable) が利用できます。 https://msdn.microsoft.com/ja-jp/library/bb340482(v=vs.110).aspx 値が見つからない時にはnullが返ります。 public class ExClass { public int cd01 { get; set; } public string name1 { get; set; } } 画面上のテキストボックス t_Cd.Textに入力されたcd01値を含む要素があるかを検索し、要素があればその要素を返し、その要素がなければnullを返します。 using System.Linq; //すでに登録されている奉納種ではないかを確認する ExClass CheckCd01 = ListExClass.FirstOrDefault(l => l.cd01 == int.Parse(t_Cd.Text)); こちらも参考になりました。 https://social.msdn.microsoft.com/Forums/ja-JP/3bf9b902-41d9-4bbb-a664-9df1e50a9a10/listobservablecollection?forum=netfxgeneralja
Jul 27, 2017
閲覧総数 2030
10
YouTubeにライブストリーミングしたら、YouTubeで以下のように出ていた。 16:14 Bad Bad video settings キーフレーム間隔を 4 秒以下にしてください。現在、キーフレームの送信頻度が低いため、バッファリングが発生することがあります。現在のキーフレーム間隔は 8.3 秒です。取り込みエラーが発生した場合は、GOP(ピクチャー群)のサイズに誤りが生じることがあります。 動画の解像度を確認してください。現在の解像度(1364x768)は最適ではありません。 対処はこれ http://akiyoko.hatenablog.jp/entry/2016/01/26/014036
Oct 18, 2016
閲覧総数 6608
11
Gridの背景色を変えたい時のコードGrid.Background = new SolidColorBrush(Colors.Green);○SolidColorBrush クラス名前空間: System.Windows.Media純色で領域を塗りつぶします。Solid は固い、中まで同じ物質という意味合いから、すべて同一な色ブラシという意味SolidColorBrush(Color) :Color を指定して、SolidColorBrush クラスの新しいインスタンスを初期化します。https://msdn.microsoft.com/ja-jp/library/system.windows.media.colors(v=vs.110).aspxColors クラス:定義済みの色のセットを実装します。○Gridクラス名前空間: System.Windows.ControlsBackgroundプロパティPanel の境界線間の領域を塗りつぶすために使用する Brush を取得または設定します。 (Panel から継承されます。)
Mar 1, 2016
閲覧総数 8221
12
Fess PDF全文検索 http://fess.codelibs.org/ja/articles/article-1.html JDKのインストール apt-get install default-jdk apacheのインストール apt-get install apache2 80番でアクセスさせたい時に利用する。デフォルトの8080でアクセスさせる際には必要ない。同じサーバで、webサイト公開したいのなら必要。webサイトで公開しているhtml,txtその他PDFファイルなどをクロールして表示する事ができる。 Fess 11.4.5の取得(2017.12.18) wget https://github.com/codelibs/fess/releases/download/fess-11.4.5/fess-11.4.5.deb fessのインストール # dpkg -i fess-11.4.5.deb Selecting previously unselected package fess. (Reading database ... 92510 files and directories currently installed.) Preparing to unpack fess-11.4.5.deb ... Creating fess group... OK Creating fess user... OK Unpacking fess (11.4.5) ... Setting up fess (11.4.5) ... Processing triggers for systemd (229-4ubuntu7) ... Processing triggers for ureadahead (0.100.0-19) ... /usr/shar/fess/bin にインストールされる # ls /usr/share/fess/bin/ fess fess.in.sh generate-thumbnail plugin.xml 起動しようとしたら起動しないので削除 dpkg -r fess (Reading database ... 100790 files and directories currently installed.) Removing fess (11.4.5) ... Stopping fess service... OK 気を取り直してzipバージョンを取得 wget https://github.com/codelibs/fess/releases/download/fess-11.4.5/fess-11.4.5.zip zipを解凍 unzip fess-11.4.5.zip 名前をfessに変更して配置 mv fess-11.4.5 /usr/share/fess fess を実行 /usr/share/fess/bin# ./fess 無事起動するようになりました。 注意情報 fessは、初期動作が遅くて。ホームページが表示されるまでに5分以上かかる。あまりにも遅くて、あれサーバ起動しているはずなのに動かないってなる。根気強く待つと、安定稼働始める。 管理画面へのログイン ユーザ名:admin パスワード:admin インデックス作成から検索まで http://fess.codelibs.org/ja/articles/article-1.html#id11 PDFファイルがクロールされないトラブル そもそもクロールとは クローラーというボットが、情報を集める行為。Googleのウェブクローラーは[Googlebot]という名称。巡回ロボット。クローラーが情報を収集する行為をクロールといい、fessでもcrawlerという名称でクロールの設定ができる。webサイトの情報を集める事。クローラーはリンクをたどってクロールされるので、リンクがなければクロールされない。 注意1 そもそもPDF内のテキストは大丈夫か? OCRで読み取りを行った際に、古いアプリや、書籍自体も古く紙が劣化していると、スキャンデータ自体が文字化けしている事があります。この状態ではいくらクロールかけても検索結果は出てきません。一度、PDFの文字列をコピーしてテキストなどに貼り付けてみてください。これでちゃんと読める状態ならクロールをかけて検索できるようになります。 注意2 クロール対象のファイルサイズが大きいと、インデックスされない。 http://fess.codelibs.org/ja/11.3/config/crawler.html デフォルトでは HTML ファイルは 2.5M バイト、それ以外は 10M バイトまで処理します。 扱うファイルサイズを変更したい場合は app/WEB-INF/classes/crawler/contentlength.xml を編集します。 1xxx-xxx-xxxxx<!-- 10M --> "text/html" 2621440<!-- 2.5M --> 編集した後はfess本体を再起動する事 注意3 PDF内の文字がクロールされない fess-crawler.logに 06:52:34,987 [Crawler-2xxx-xxx-xxxxx-1-1-pdf] WARN Using fallback font LiberationSans for CID-keyed TrueType font MSGothic 2xxx-xxx-xxxxx と表示され、PDF内の文字がクロールされない場合、 https://github.com/codelibs/fess/issues/1157 http://fess.codelibs.org/10.1/admin/webconfig-guide.html#config-parameters にて、設定パラメータに crawler.ignore.robots.txt=false とする事でクロールされるようになった。 クロール対象の登録 クロールの開始 クロールが完了しているか確認します。 webでクロールする場合は、検索対象からさらにリンクが張られている事を確認します。リンクがないと、検索されません。 クロール設定で、クロール対象とするURLを設定するのはいいですが、URLで指定した以外はクロールされなくなってしまうため、 http://ホスト名/.* の.*を忘れないようにします。これを忘れると、http://ホスト名/しかクロールしてくれない事になり、index.htmlなどデフォルトで表示できるようにしているwebサイトしかクロールされなくなります。 検索 WordPressで、全文検索サイトを作ってみようとチャレンジしてみました。Search Everything 投稿や、記事だけでなく、PDFの全文検索サイトを作成してみます。 https://wordpress.org/plugins/search-everything/ WordPressのデフォルト検索機能を向上させます。ページ、抜粋、添付ファイル、下書き、コメント、タグ、カスタムフィールド(メタデータ)を検索するように設定し、独自の検索ハイライトスタイルを指定することができます。 検索速度も気になるところです。 プラグイン Search Everythingのインストール Serch Everythingプラグインを探し、インストール有効化します。 Serch Everythingオプション変更 すべてのメディア (アップロードファイル) を検索: にチェックを入れます。 これで検索されるはずなのですが、ファイルサイズが大きすぎるのか検索できませんでした。
Dec 16, 2017
閲覧総数 2309
13
asp.net でカウントアップボタンを作りたいと思います。 ボタンを押すとpostbackが発生してしまい、コード内で保持していた変数の値はクリアされてしまいます。この時便利なのが、viewstateです。 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ViewState["ninzu"] = 0; l_Count.Text = (int)ViewState["ninzu"] + "人"; } } //カウントアップボタン protected void B_Count_Click(object sender, EventArgs e) { ViewState["ninzu"] = (int)ViewState["ninzu"]+1; l_Count.Text = (int)ViewState["ninzu"] + "人"; } //カウントダウンボタン protected void B_Count2_Click(object sender, EventArgs e) { if ((int)ViewState["ninzu"] == 0) return; ViewState["ninzu"] = (int)ViewState["ninzu"] - 1; l_Count.Text = (int)ViewState["ninzu"] + "人"; } 参考 https://code.msdn.microsoft.com/10-ViewState-C-ae606674
Aug 16, 2017
閲覧総数 178
14
PowerEdgeT330を購入した。 1.Windows2012Srvのベアメタル回復を試してみる Windows2012Srvでベアメタル回復 Windows2012には標準バックアップツールでベアメタル(イメージ)バックアップができる。 この標準バックアップを行うためには役割と機能の追加ウィザードで、WindowsServerバックアップをインストールする必要がある。(インストールしたら再起動の必要がある。) 単発バックアップ サーバ全体 復元はWindows2012SR2セットアップ起動ディスクでブートする イメージでシステムを回復 ディスクをフォーマットしてパーティションに再分割するにチェック 再起動後、通常通り起動する事を確認 試験的にインストールディスクから元々あったパーティンを削除し、復元できるか確認 WindowsバックアップをNASディスクで利用する注意点 リモート共有フォルダにスケジュールバックアップする場合、バックアップごとに以前のバックアップは消去され、最新のバックアップのみになる。 Windowsバックアップは1日複数回のスケジュールを組む事が可能 Windowsバックアップに差分バックアップ機能はない WindowsImageBackupこの中に入っているイメージファイルを直接マウントしちゃだめ、直接マウントできないだけではなく、プロセス利用中となり復元できなくなる。再起動しても症状は変わらないので致命傷になる。 2.Dellサーバのシステム管理について iDARC7 Dell OpenManage Server Administrator(OMSA) の2種類あり、どちらを入れていいのか分からない。 http://ja.community.dell.com/techcenter/systems-management/f/99/t/1573 iDARC7 iDRAC7は、搭載されているPowerEdgeの状態・構成を一元的に管理しているコントローラ OMSA iDRAC7以前やiDRACが搭載されていないサーバに対して、PowerEdgeの状態・構成を一元的に管理しているエージェント OpenManage Essentials 複数のPowerEdgeサーバを管理するためのもの 今回購入したのは最新のT330なので、iDARC7を導入すればいいのかなと思ったが、、、。 OpenMange Systems Management Tools DVDを入れてインストールできるツールを見ると サーバシステム管理者 iDRAC Service Module DRACコマンドラインツール ActiveDirectory Snap In Utility ベースボード管理コントローラ(BMC)ユーティリティ の項目があり、ここからiDRAC Service Moduleをインストールしたけど、管理画面は現れず、サーバシステム管理者を選んでインストールしたらおなじみのOMSAの画面が出てきた。うーん、こっちでいいのかなぁ。とりあえずやりたいのはRAIDの管理と、システム内の正常性を確認したい。ファンとか、温度とか。OMSAを入れればこの辺全部確認できるし。これでいいか。 3.RAID故障試験 故意的に1本RAIDを壊してみる 本当に壊れると嫌なので、1度電源を落とし、RAID1で組んである1本のSSDを抜く。 起動させるとどうなるか? フロントベゼル上の窓は橙色に変化 OpenManage Server Administratorではストレージにエラー表示(非重要) ※ちょっとおとなしい。異常に気付くかなぁ。起動中に引き抜くともっと大きなアラーム音とか なんかサイレン的な感じでやってくんないと。 抜いたSSDを差し込んでみた OpenManage Server Administrator上の表示で 再構築中の表示が出た。 進行 % を確認すると、どれくらい再構築が進んでいるか分かる。 今度は1本いきなり引き抜いてみた。 アラーム音は出ないけどOpenManage Server Administratorで、「重要」表示が出てきた。 もうちょっと異常を表してくれたらいいのに。 再度抜いたSSDを差し込むと、先ほどと同じで自動的に再構築が始まった。 4.アンチウィルスは、無料で利用できるSystem Center 2012 Endpoint Protectionを利用 インストールの仕方はこのサイトが参考になる http://systemaoi.blog.fc2.com/blog-entry-113.html 5.コンピュータ名の設定 サーバアプリによって _ が使えないとかあるので注意する 日本語も避けた方がいい 6.ActiveDirectoryの構築 この辺の説明でどうでしょう http://www.rem-system.com/post-671/ うちでは、メンバーサーバにして、すでにあるActiveDirectoryユーザを利用した メンバーサーバにするのは簡単。すでにあるActiveDirectoryに追加(ドメインへの参加) http://symfoware.blog68.fc2.com/blog-entry-1469.html
Feb 25, 2017
閲覧総数 430
15
WPFを作成しています。 操作が完了したら、ボタンの上に完了を意味するアイコンを表示したい(文字の上に重ねて画像を表示したい)という案件が出てきました。 画像の表示方法 bluebird.pngを表示したいXAML上にドロップすると、ソリューションエクスプローラに表示されます。ソリューションエクスプローラ上で、分かりやすいフォルダを作成し分類しておきます。 ボタンにスタックパネルを作成し、Image Sourceと、Label Contentを配置します。 文字と絵がかさならない状態はこれでできます。 文字を重ねたい場合は、StackPanelを利用せず、Gridを利用します。 後は、C#コード上から、image01のvisiblityをVisibleにするか、Collapseにするかで制御します。 実行した時、まれに画像が表示されない時があります。この場合は、画像ファイルのパスを疑います。今回は画像ファイルをResoucesフォルダに配置したので、パスは、 Source="./Resources/bluebird.png" このように指定しました。 参考 WPF で ボタン に 画像 を 使用する 方法 https://garafu.blogspot.jp/2015/12/wpf-image-button.html 参考 [WPF/XAML] リソースから画像を読み込む http://mithrilworks.jp/others/program/xaml/resource.html
Apr 16, 2018
閲覧総数 2107
16
WPFにListboxを配置し、その中のstackpanelにItemを表示していたらめちゃくちゃ遅くてとても使い物になりませんでした。 スクロールしようとしても遅いし、なにやっても遅いのです。 このプログラムのその部分は管理側しか使わない機能だったので、皆様にはごめんなさいして遅いまま使っていただいていたのですが、やっと解消しました。 まず試したのは、Listbox内にVertualizatingStackPanelを配置して、見えていない部分はレンダリングしないという手法です。ただ疑念があったのは、私のプログラムはリストとしても200~300程度。数千とか、数万のリスト表示をしているわけではないのです。 本家サイトから https://docs.microsoft.com/ja-jp/dotnet/framework/wpf/advanced/optimizing-performance-controls こちらのサイトがとても参考になりました。 http://yuuxxxx.hatenablog.com/entry/2014/02/01/232320 オプションを全部乗せしたXAMLが表示されていたので、それをコピペして真似して。だけど一向に変わりません。 また、仮想化の概念はこのサイトの方の絵が分かりやすいです。 https://clown.hatenablog.jp/entry/2xxx-xxx-xxxxx/listview_virtualizing まずはVertualizatingStackPanelを利用したXAMLについて <ListBox x:Name="listG" Margin="206,179,198,0" FontSize="26" BorderBrush="{x:Null}" ScrollViewer.VerticalScrollBarVisibility="Disabled" RenderTransformOrigin="0.5,0.5" Background="#FFFCFFDC" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Height="178" VerticalAlignment="Top" MouseUp="listG_MouseUp" ScrollViewer.CanContentScroll="True" ScrollViewer.IsDeferredScrollingEnabled="True" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" ItemsSource="{Binding Collection}" ScrollViewer.PanningMode="HorizontalOnly"> <ListBox.RenderTransform> <ScaleTransform/> <SkewTransform/> <RotateTransform/> <TranslateTransform/> </ListBox.RenderTransform> <ListBox.ItemsPanel> </ListBox.ItemsPanel> <ListBox.ItemTemplate> <Grid Width="150" Background="{Binding Brush}" > <Grid.RowDefinitions> </Grid.RowDefinitions> <Rectangle Grid.Row="0" /> <Run Language="ja-jp" Text="{Binding Name}"/> <Run Language="ja-jp" Text="{Binding Name1}"/> <Run Language="ja-jp" Text="{Binding Name2}"/> </ListBox.ItemTemplate> XAML itemsourceの引き渡し ItemsSource="{Binding Collection}" C#表記では、List<>をこのように引き渡しました List GItemList = new List(); GItemData = new GItem { Name = dt.DefaultView[i]["name01"].ToString(), Color = TColor }; GItemList.Add(GItemData); listG.ItemsSource = GItemList; GItemクラスは別途作成してあります public class GItem { public string Name { get; set; } public string Name1 { get; set; } public string Name2 { get; set; } public Color Color { get; set; } public Brush Brush { get { return new SolidColorBrush(Color); } } public Color FontColor { get; set; } public Brush FontBrush { get { return new SolidColorBrush(FontColor); } } } 結局遅かった原因 FontFamily="/Choose;component/Fonts/#HGPGyoshotai" Textblockに指定したこのフォントが問題でした。このフォントはプログラムファイルを起動するフォルダに同梱してあります。このフォント指定をやめたら、Listboxが快適に動くようになりました。
May 26, 2018
閲覧総数 1256
17
トグルスボタン : 押し込んだら押しっぱなしになるボタントグルスイッチ : iPhoneの設定スイッチのように横にスライドするスイッチです。明確な違いはこちらからhttps://msdn.microsoft.com/ja-jp/library/windows/apps/hh465475.aspxトグルスイッチは、チェックボックスと似たような性格ですが、トグルスイッチは、ONにしたらすぐに有効になる、チェックボックスはチェックした後確定する事で有効になるといった利用になります。
Feb 26, 2016
閲覧総数 3073