C# + OpenCvSharpで画像を回転してリサイズする

タイトルの通り、OpenCvSharp(ver.3.x系)を使って画像を左右に90度倒した後、画像をリサイズして、はみだした状態や黒部分が無い状態にします。 回転だけすると以下のように意図しない状態や黒い帯が出て微妙に調整が必要だったりします。 ↓これが元画像 …

C#の最新版(C#7.3などを)を使用する方法

2018年6月2日現在、VisualStudioの.NETのC#プロジェクトでC#7.3などの最新のC#規格を利用可能にする方法を紹介したいと思います。(何故か、C#7.0までの構文しか使えず調べるのに手間取ってしまったのでやり方のメモとなります。) C#のバージョンの選択方法…

C#でFizzBuzzを実装する

FizzBuzzの問題を解くこと自体、やり尽くされた感がありますが、自分で書いたものを記事にしたことが無かった気がしたのでチャレンジしてみようと思います。 実装した環境はVS2017(15.7.2) + .NET4.7.2 (≒C#7.2)です。(C#6.0であれば問題ないので新しい環境…

C# + OpenCvSharp + WFP で Webカメラ画像を表示する

C#で利用できるOpenCVのラッパーライブラリの「OpenCvSharp」を使ってWebカメラで撮影した画像をWPFに表示したいと思います。 OpenCVを使用すれば数行で実現できるのでとっても簡単に実装できます。 今回使用するOpenCvSharpはバージョンが、3.4.1.20180319…

C#びDictionaryで自作オブジェクトをキー:TKeyに使用する

C#のDictionaryのTKeyにオブジェクトを指定した場合、参照アドレスが同じであれば同じオブジェクトと判断されます。これはオブジェクト同士の比較で a == b が true となる場合、同じキーと認識されることを表します。 今回は、自作のクラスの内容が同じ場合…

コメントが要らないプログラムの書き方

はてなブックマークで「コメントの要らないプログラムの書き方」が話題みたいです。 個人的には以下はまぁOKかなぁと思ってます。 自分の確認のために書いてある書くコメント(ギリギリ) 業務仕様を記述したコメント どうしてそうしているのかを書いている…

WPFで未処理の例外を一括で処理する

WPFで例外が処理されずに最上位のベントハンドラから例外がthrowされた場合、アプリがクラッシュします。 アプリがクラッシュすると、以下のような、OSのアプリのクラッシュレポートダイアログが表示され、以上が発生したことがユーザーに通知されます。 こ…

WindowsでMarkdownエディタをセットアップする

Windows環境でリアルタイムプレビュー機能付きのMarkdownエディタ環境を作成する方法です。 「シンタックスハイライト」でき「リアルタイムプレビュー」な環境を「VisualStudioCode」を使って作成したいと思います。 早速VSCodeをインストールします。 Micro…

C#で簡単なファイル操作を行う

C#

C#でファイル操作するときはStream系のクラスを使用します。どんなに小さいファイルであってもたいてい以下のようなコードになるのですが若干記述量が多いのが気になります。 public static void Main(string[] args) { using(var sr = new StreamReader(@"h…

Backblaze社のHDD故障率2017年4Qレポート + 年間まとめ

先日、クラウドストレージ運営会社のBackblazeが定期的に発表しているHDD故障率のデータの2Qデータの表を文字起こししたのですが、既に4Qデータと2017年の年間のまとめが発表されていたみたいなのであたらめて表を文字に起こしてみました。4Qデータは2017年1…

Cocos2d-x でsetScaleとsetContentSizeの挙動の違い

すぐ忘れるのでメモ代わりにまとています。 Cocos2d-xで、Spriteに対してサイズ変更するときに、setContentSize(), setScale()各々を実行した時の挙動の違いは以下の通りで。 まず、100x100pxの大きさの画像を読み込む。 Sprite* sp = Sprite::create("100x1…

CocosStudioで作ったLayerの子要素を自作のLayerに載せ替える

CocosStudioで作成で作成したLayerの子要素を自作したLayerに乗せ換える話です。 CocosStudioで「Layer」を作成し、csb形式でpublish後にCocos2d-x側から、そのレイヤーを呼び出します。そうすると、取得できる型がcocos2d::Node*型で取得できます。CocosStu…

環境変数をコマンドを使ってバックアップする

Windowsで、コマンドを使って環境変数をファイルにバックアップする方法です。 環境変数自身は、OSのレジストリに保存されているため、レジストリ操作のための「reg」コマンドを使用します。 regコマンドでレジストリを保存する時のパラメータは以下の通りで…

Cocos2d-xでスプライトがタッチされたかどうかを判定する

Cocos2d-x でスプライトがタッチされたかどうかを判定する場合、タッチされた座標がスプライトの中か外かを判定して行います。便利なメソッドなどが存在しないため、定型的なコードを書く必要があります。 以下の環境で確認しています。 Cocos2d-x 3.16 Win3…

Google翻訳から韓国語を消す

結構長らくGoogle翻訳にはお世話になっていますが、「韓国語」って表示ありますよね?邪魔なので消したいと思います。 前提条件として、以下の2点がクリアされている事とします。 Choromeを使っている Adblock Plus の Extension を入れていること Adblockの…

C#の三項演算子をリファクタリングする

C#で三項演算子って使ってますか? タイトルの件ですが、条件判定で、三項演算子を使った以下のようなコート見たことありませんか? public void SelectString(string text) { // text の中身が "animal" だったら0を返す。そうでい場合1を返す int index = …

C#のDictionaryをソートする3つの方法

C#

C#でDictionaryの内容をソートする方法を3つ紹介したいと思います。 前提条件 説明に使用するデータ構造は下の通りです。 // 必要な宣言 using System.Collections.Generic; using System.Linq; // 値に使用するクラス public class Item { // プロパティ pu…

Cocos2d-x でレイヤーに対してリアルタイムにブラーをかける

ゲームでメニューを出す際に、背景がぼやけて少し暗くなった後に、前面にダイアログが表示される演出があります。そのような画面をぼやかす事をブラーを言います。 今回はこの「ブラー」をCocos2d-xのレイヤーに対してかけてみたいと思います。 成果物 作成…

C#で構造体のunion(共用体)を扱う

C/C++にあるunionをC#で使用する方法は、ネットにいくつか解説しているサイトがあります。しかし、構造体がunionになったものは例があまりないため紹介したいと思います。 基本的に、StructLayout = "LayoutKind.Explicit"(明示的にレイアウトを指定する)…

C#でリトルエンディアンをビッグエンディアンに変換する

タイトルの通り変換をするための操作の紹介をしたいと思います。 まず、誤解を恐れずに言うと、ネットワークにデータを流すときは「ビッグエンディアン」形式、いつも使ってるPCは「リトルエンディアン」形式が使われています。 更に、ネットワーク上にデー…

Visual Studio 2017でTypeScript環境を構築する

ある程度性能があるWindowsデスクトップ環境で学習用のTypeScript環境を構築するためのメモです。 Windows上でのTypeScriptの開発環境はVisual Studio Codeを用いて環境構築が検索結果として多いですが、各種ツールを組み合わせる + Pluginを多用する関係で…

WPF + OpenCVSharpで画像の表示と切り出しを行う

タイトルの通り、OpenCVSharpを使用して画像の読み取りと、画像の部分的な切り出しを行います。 パッケージと導入方法 今回使用するのはWPFで利用性の高い以下のパッケージを使用します。 github.com VisualStudio上でパッケージマネージャを開いて以下を入…

プリコネRはキャラコンプにいくら必要か検証してみた

タイトルの通り正式タイトル「プリンセスコネクト!Re:Dive」は、一体いくらお金を払えば登場するキャラクター全員をコンプリートできるのでしょうか?さすがに、実際にお金を払って体当たりで確認する訳にいかないため、検証用のプログラムを作成し、シミュ…

タッチ・スワイプした後にエフェクトを発生させる

今回は、「画面にタッチした場所の表示」と「スワイプした軌跡」にエフェクトを表示する汎用レイヤーを作成します。 成果物 前回作成した「X-Y座標系と円座標系、2点間の角度を求める」の上に軌跡エフェクトのレイヤーをかぶせています。ちょっと原色されて…

サインカーブを使って雪を降らせるデモ

前回までの、X-Y座標系と円座標系の学習の一環として、サインカーブを使って雪を降らせるデモを実装してみました。 『JavaScriptゲームプログラミング 知っておきたい数学と物理の基本』から、第2章 基礎編-2 三角関数、2-2 サインカーブを使ったサンプルの…

C#でフラグ扱いの変数名にフラグと命名してはいけない

若干、揚げ足取りなのかもしれませんが、このような記事がQiitaに上がっていた上がっていました。 qiita.com で、フラグ的なbool型の変数にフラグって名前を付けちゃうと脳に負担がかかるからやめようという話です。記事では評価方法の話題ですがここでは変…

X-Y座標系と円座標系、2点間の角度を求める

前回作成した「X-Y座標系と円座標系」の確認のためにちょっとしたサンプルを作成しようと思います。 takachan.hatenablog.com 作成するもの Cocos2d-xを使って中心に自機に見立てた四角を置き、多面をクリックすると、自機とタップ位置の角度を求めて玉を発…

X-Y座標系と円座標系

最近Kindleで購入した書籍『JavaScriptゲームプログラミング 知っておきたい数学と物理の基本』から、2-1-1 X-Y座標系と円座標系をやってみました。 JavaScriptゲームプログラミング 知っておきたい数学と物理の基本 (Future Coders(NextPublishing))作者:…

C#でインターフェースをDisposeする

C#

C#で引数をインターフェースで受けた時に実際の具象クラスがIDsiposabeを継承していてそれをDisposeしたいときの方法です。継承階層は以下の通りで青いIDatabseで変数を受けた時の話になります。 コードにすると以下のような状態です。 // コード例 public c…

C#で(a ==1 && a== 2 && a==3)」の結果を真にする方法

C#

先ほどはてブで、JavaScriptで「(a ==1 && a== 2 && a==3)」の結果を真にする手法が議論されるという記事を見かけたのでC#で同様の結果を得るためにはどうすればいいのか考えてみまました。 この問題、左辺の「a」の型が明示されていないことを利用してC#で…