Netty’s Notebook

ねってぃーの備忘録

コンソールをいい感じにしてみた

はじめに

使ってきた(あまりつかっていなかった)コンソール環境を
Fluent-terminalとPowerShell7を使って、いい感じにしてみました。
あとで別パソ設定のための備忘録。

【環境】
Windows10 Pro 64bit

Fluent-Terminal とPowerShell 7をインストール

Fluent-Terminal はここを参考にイントール
Windows 10 のコンソール環境をいい感じにした - Yamaleaks

cmderはインストールしなかった。
posh-git、oh-my-posh は入れてみた。

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser


PowerShellはここから
(下のほうにリンクがある)
GitHub - PowerShell/PowerShell: PowerShell for every system!

PowerShellのプロファイルの設定

notepad $PROFILE

これでプロファイルをに下記を追記。
3行目がSet-Theme Paradoxだとエラーになって調べてみたら、
どうやらコマンドが変わっているみたい。

Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt Paradox

PowerShell7にPowerlineを設定時に起きたエラーの対応備忘録 - Qiita


Fluent-Terminalの設定

左上のメニューから、設定 -> プロファイル にPowerShellがあるので
これを複製して編集。 シェルの実行ファイルの場所はPowerShellの本体の場所を指定。
引数に以下を設定。パスはPowerShellのプロファイルを指定する。

-ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''D:\Documents\PowerShell\Microsoft.PowerShell_profile.ps1'''"


こんなかんじ

あとはフォントの設定。 ここからダウンロードとインストールをする。 GitHub - adobe-fonts/source-code-pro: Monospaced font family for user interface and coding environments

FluentTerminalの設定の ターミナル→フォントファミリーをSourceCodeフォントを選んであげれば完了。

【WPF】ウィンドウ枠を非表示にする

親ウィンドウから、子ウィンドウ(枠線なし)をポップアップでメッセージなどを表示する…ようなものを作りたくて、いろいろ考え…。。
はじめはコントロールでやろうかと思ったけど、ウィンドウを完全に枠無しにできるようなので子ウィンドウを表示する方法に変更。
枠線だけは残ると思っていたけど、背景まで完全に見えなくできるのね。

目標

ウィンドウ枠を非表示にする
コントロールのみが表示されるようにする

コード作成

<Window x:Class="WinDllText.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WindowBorderNone"
        mc:Ignorable="d"

        WindowStyle="None"
        AllowsTransparency="True"
        Background="Transparent"

        Title="LimitOutWindow" Height="450" Width="800">
    <Grid>
        <Button Height="50" Width="100">ぼたん</Button>
    </Grid>
</Window>

WidnowStyleをNoneにすることでタイトルバーを非表示。
AllowsTransparencyをTrueにすることで枠線を非表示?(WidnowStyle=”None”にしないといけない)
BackgroundをTransparentにすることで背景色を透明に。

参考

WPFで、ウィンドウ枠を非表示にする

【WPF】QRコードを表示してみた

WPFQRコードが作成できたら…と思っていろいろ調べてみました。

目標

準備

標準のライブラリでQRコードを作成することはできないけれど、 オープンソースのライブラリを使用して作成することができるみたい。

英数字のみ対応のライブラリが多い中、ひらがなや漢字まで対応している『DotNetBarcodeV2.4.0』を使わせていただきました。

「プロジェクト」→「プロジェクト参照の追加」からダウンロードした「DotNetBarcode.dll」を追加。

コード作成

<Window x:Class="QRcode.MainWindow"
    <Grid>
        <Button Margin="465,0,287,0" Click="Button_Click" Height="20" VerticalAlignment="Top" >生成</Button>
        <TextBox x:Name="Textbox1" HorizontalAlignment="Left" Height="20" Text="あいうえお" TextWrapping="Wrap" AcceptsReturn="True" VerticalAlignment="Top" Width="465"/>
        <Image x:Name="QRImage" Margin="12,50,642,236"/>
    </Grid>
</Window>

using Sysmte;
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
     private void Button_Click(object sender, RoutedEventArgs e)
    {
        qr();
    }
     private void qr()
    {
        //DotNetBarcodeオブジェクトを作成(引数はなくてもいいみたい)
        DotNetBarcode bc1 = new DotNetBarcode(DotNetBarcode.Types.QRCode);
//QRコードの文字 String QRcodeStrings;
//PixcelSize:1モジュール(1つの点の大きさ:ピクセル)の大きさを5pxに。 //値が小さすぎるとぼやけるっぽい? int PixcelSize = 5;
//テキストボックスの文字列をBarcodeStringsに格納 QRcodeStrings = Textbox1.Text;
//QRコードをクリップボードへコピー→表示 bc1.QRCopyToClipboard(QRcodeStrings, PixcelSize); QRImage.Source = Clipboard.GetImage(); } }

QRWriteBar()メソッドの使い方がよくわからなかったので QRCopyToClipboard()メソッドを使ってクリップボード経由でImageを更新します。

テキストボックスのAcceptsReturnをTrueにすることで 改行も反映されるようになりました。

直接QRcodeStringsを指定するときは、改行コード「\r\n」を使うことで改行できました。

【WPF】MediaElementで動画プレイヤーを作っていてハマったところ

MediaElemntを使って動画プレイヤーを作成していて
動画が最後までいったときに5秒戻らせるボタンを押したときに
MediaElement.Positionが0に戻ってしまう原因がわからなく。。。

こんなかんじにしてました。

//Positionを5秒前に
mediaElement.Position -= new TimeSpan(0, 0, 5);
//スライダーを再生位置に移動
Slider_Change();
//動画を再生
mediaElement.Play();

これだと、一旦5秒前に移動されるものの、はじめから再生されるんですよね…

そこでなんとなく順番を変えてみた

//動画を再生
mediaElement.Play();
//Positionを5秒前に
mediaElement.Position -= new TimeSpan(0, 0, 5);
//スライダーを再生位置に移動
Slider_Change();

こうすることで、うまく5秒前から再生させることができました。
なんでかは不明(汗
わかる人教えて…

【WPF】タイマーによる一定時間間隔の処理

一定間隔で処理するには、DispatcherTimer クラスを使う。
Using System.Windows.Threadingがあるか確認。

//  タイマーイベント
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
//1秒間隔に設定
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();

dispatcherTimer_Tickが一定間隔で実行される

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
    //ここが 一定間隔で実行される

    //タイマーの停止
    dispatcherTimer.Stop();
}

【WPF】ファイルを開くアプリケーション

作り方が全く見当つかなかったけど、
調べてみると、どうやらexeにドラッグ&ドロップしたときに
コマンドライン引数としてファイルパスを渡すらしい。
これでファイルパスを受け取って、フォーム上で表示させたりできる。

string[] args = Environment.GetCommandLineArgs();

これでコマンドライン引数を取得できる。
args[0]は実行exeなので、args[1]以降を使えばOK

【Unity】複数の音を鳴らす

オブジェクトにAudio Sourceコンポーネントを追加する。
これがないとCDプレイヤーがない状態になり、音が再生されない。 
AudioClipは音源ファイルを入れるもの。
.aif / .wav / .mp3 / .ogg / .xm / .mod / .it /.s3mの形式が使える。

▼Audio Sourceコンポーネントを追加
f:id:Nettymg:20200225003830p:plain

スクリプトで音をコントロールする。
複数の音を同時に鳴らすにはAudioSourceを複数にするらしい。

public AudioClip audio1;
public AudioClip audio2;
private AudioSource audiosource;

void Start()
    {
        audiosource = GetComponent<AudioSource>();
    }

public void PlyaSound()
    {
        audiosource.PlayOneShot(audioSelect);
    }


PlayはBGM用(再生できる音は一つだけ)、
PlayOneShotはSE用(再生中の音に合成される)という感じ。
今回はSEだったのでPlayOneShotを使いました。


参考サイト