X



ふらっと C#,C♯,C#(初心者用) Part141

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/12/15(土) 10:46:07.45ID:Wu4Fx0bU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0682デフォルトの名無しさん
垢版 |
2020/07/28(火) 20:12:36.90ID:vZrvythQ
>>679
いえ、アルファ値が0なので完全に透明で何も見えないのでARGB(0,0,0,0) と区別はつかないですが、
メモリ上のビットマップの内容にはアルファが0でも赤と緑の値に128や255の値を書き込めますよね。
そういう描画(つまり半透明演算をしない)がしたいんです。

>>680
目視できないくらい薄い黄色で描画されました。
何度も重ね描きしたら、うっすらと黄色が見えてきました。
不透明度128なら半透明の黄緑色で描画されます。

>>681
this.bmp は画像ファイルなので、その上に上書きで円を描画すれば元の画像が消えますよね?
そうはならず、元の画像のままなので期待通りにはなりませんでした。
0683デフォルトの名無しさん
垢版 |
2020/07/28(火) 20:21:15.85ID:DIHaAiPw
>>682
>その上に上書きで円を描画すれば元の画像が消えますよね
透過で上書きして消えるペイントソフトある?普通は消しゴムじゃないか?
それなら範囲指定するデータを設定してそれに沿ってBitmapDataで画素を置き換えたことしかない
0684デフォルトの名無しさん
垢版 |
2020/07/28(火) 20:31:52.02ID:s40ygP9w
ARGB(0, 128, 255, 0)で描画したはずが
抜き出してみるとARGB(0, 0, 0, 0)になってしまうとか?

それとも
ARGB(0, 128, 255, 0)での描画or透過処理で、画像に目で見える影響を与えたいとか?
0685デフォルトの名無しさん
垢版 |
2020/07/28(火) 20:49:25.10ID:vZrvythQ
>>683
消えるペイントソフトは無いと思います。
消しゴムだと普通はアルファ値だけ0になるか、又は透明な黒 ARGB(0,0,0,0)で消えますよね。
そうではなく、透明で黄緑な消しゴム ARGB(0,128,255,0) を使いたいという事です。

>>684
>ARGB(0, 128, 255, 0)で描画したはずが
>抜き出してみるとARGB(0, 0, 0, 0)になってしまうとか?

違います、元の画像のまま何も変化なしです。

>それとも
>ARGB(0, 128, 255, 0)での描画or透過処理で、画像に目で見える影響を与えたいとか?

そうです、透明な黄緑で円を描画したのだから、
円の形で透明に切り抜かれてほしいんです。
(更に切り抜かれた部分は透明な黒ではなく、透明な黄緑で)
0686デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:04:55.49ID:s40ygP9w
透明な黄緑の先には元の画像が薄っすら見える方がいいのか?

透明な黄緑一色の均一な色で塗りつぶすのか?
0687デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:12:34.91ID:AU+xTBn3
>>682
と言うことは、不透明度0の時に特別扱いされてないか確かめないといかんな。
不透明度0って、描かないと判断されてるのかもしれん。
0689デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:15:26.22ID:CTX9A1Y/
掲示板で一番楽なのは計算式かな?
それがformsアプリでできるかどうかって言うと微妙だと思うけど
0691デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:22:54.80ID:DIHaAiPw
>>685
あらかじめthis.bmpをFormat32bppArgbにする
this.bmpと同じ大きさのBitmapを作ってくりぬきたい場所にFillEllipseで描画する。(refbmpとする)
refbmpとthis.bmpのBitmapDataを作ってrefbmpの画素がある部分と同じアドレスでthis.bmpの画素のアルファ値を0にした黄緑色の画素データを書き込む
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.imaging.bitmapdata.scan0
これしかやったことは無い。図形じゃない塗りつぶしならGraphics.Clear(Color)が使えるけど図形を指定するやり方はわからない
0692デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:24:32.89ID:8/UcfNM3
>>685
なんか思いっきり勘違いしてる気がするけど、アルファが0ってことは
何も上書きしないのと同じことだよw
無色のガラス板を乗せたのと同じだからw
0693デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:51:15.86ID:vZrvythQ
>>686
>透明な黄緑の先には元の画像が薄っすら見える方がいいのか?

いいえ。

>透明な黄緑一色の均一な色で塗りつぶすのか?

はい、そうです。

>>688
フォトショップは持っていないのと、
ペイントはアルファチャンネルに非対応のようなので
Gimpで説明させていただきます。
説明画像をこちらにアップロードしました。
https://f.easyuploader.app/eu-prd/upload/20200728214113_76595047614e3537674b.zip

"元画像.png" をGimpの消しゴムツールで消すと、
"消しゴム.png" の画像になります。
この画像をGimpで開き、円で消された部分の色々な箇所を、
Gimpのスポイトツールで色を取得すればわかりますが、
青や黄色、白等が取得でき、
透明でありながら元画像の色が残っている事がわかると思います。

私がやりたいのは、"目的の画像.png" を.NETで作りたいという事です。
この画像の円で消された部分をスポイトツールで色を取得すると、
RGB(128,255,0)の黄緑色のみが取得されます。

>>690
いいえ、やりたいのはカラーキーの抜き色ではないです。
0694デフォルトの名無しさん
垢版 |
2020/07/28(火) 22:27:55.85ID:s40ygP9w
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
これで透過処理はされなくなるけど、失敗しそうな気がする(RGBがゼロになりそう)
試していなくてスマン
0699デフォルトの名無しさん
垢版 |
2020/07/28(火) 22:56:23.45ID:vZrvythQ
>>691
詳しく説明してくださってありがとうございます。
それで出来ると思います。
ただちょっと一手間がかかりそうですね。

>>694
ああ、これです!私が捜し求めていたものは!
っと思いましたが、残念ながら透明な黒 ARGB(0,0,0,0) になってしまいました。
アルファ値128ならちゃんと半透明の黄緑になるのに、惜しい。
アルファ値1だとほぼ透明な黄色になりました。

スマホで透明部分の色が確認できるのかわかりませんが、アップロードしてみました。
"元画像.png"
https://f.easyuploader.app/eu-prd/upload/20200728224712_3833583973794a4b386f.png
"消しゴム.png"
https://f.easyuploader.app/eu-prd/upload/20200728224758_6e4174726e5477434158.png
"目的の画像.png"
https://f.easyuploader.app/eu-prd/upload/20200728225050_49646a7a674171774f59.png
0700デフォルトの名無しさん
垢版 |
2020/07/28(火) 23:02:45.30ID:8/UcfNM3
適当に検証コード書いてみたけど別に変なことしなくても
ピクセルにアルファー値を持つビットマップは作れるけど
何がしたいのかな。
面倒くさいから質問ろくに読んでないけどw

private void Form1_Paint(object sender, PaintEventArgs e)
{
  e.Graphics.Clear( BackColor);
  var hb = new HatchBrush(HatchStyle.HorizontalBrick, Color.White, Color.Black);
  e.Graphics.FillRectangle(hb, ClientRectangle);

  var bmp = new Bitmap(Width, Height);
  using (var g = Graphics.FromImage(bmp))
  {
    var c = Color.CornflowerBlue;
    var gb = new LinearGradientBrush(ClientRectangle, c, Color.FromArgb(0, c), 0f);
    g.FillRectangle(gb, ClientRectangle);
  }
  e.Graphics.DrawImage(bmp, 0, 0);
}
0701デフォルトの名無しさん
垢版 |
2020/07/28(火) 23:22:12.18ID:CTX9A1Y/
>>700
あ、アルファ値って普通に書くだけでいけるんや

んじゃあ、最終出力がpngであるならなんでもできるね
1ピクセルずつアクセスしてRGB取り出してRGBAブッ込めばなんでもできるしそれこそなんでも
0705デフォルトの名無しさん
垢版 |
2020/07/29(水) 01:39:42.78ID:CwVjY0Ri
3分クッキング
0707デフォルトの名無しさん
垢版 |
2020/07/29(水) 08:08:54.77ID:dxgD+NL4
.Netは4.5を指定すればWindows8.1から2004まで追加のアップデートなしで済むんですよね?
最新のVS2019で4.72だかで作って配布したら10でも.netアップデートしなきゃ使えんと文句の嵐でめげた。
0711デフォルトの名無しさん
垢版 |
2020/07/29(水) 09:24:59.33ID:HB4PhX83
.NET Coreベースの.NET 5に統合
WindowsのOS標準でインストールされてるのはとりあえず当分は.NET Framework 4.8が続くだろうな
0713デフォルトの名無しさん
垢版 |
2020/07/29(水) 09:51:55.20ID:H7KKJzsx
WPF(始まってなかった)
0716デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:05:27.84ID:rDHTEYe8
>>707
4.6.1を勧める
Win10(初代以外)ならインストール要らず
このバージョンを要求する外部ライブラリも多いし
0717デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:07:32.45ID:7+Ufx8Gb
ラインタイム依存が嫌なら、
.Net Core 3.1 でランタイム込みの自己完結型アプリを作ればいいんじゃないの。
その分ファイルサイズはでかくなるけど。
0718デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:10:47.14ID:dxgD+NL4
そうですか、.netのアップデートは情シスに頼まないと一般ユーザーでは出来ないのがネックです。
会社の端末はwindows updateは殆んどやらないし。
.net位やって欲しいな。
愚痴ってごめんなさい。
0721デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:20:33.05ID:F052uZps
>>716
だめ。BindingRedirect周りの設計をミスったことが散々ディスられてMS側も誤りであったと認めている。4.7.2以降が推奨されている。
0724デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:42:14.30ID:DcS06fwg
アスペktkr
0729デフォルトの名無しさん
垢版 |
2020/07/31(金) 01:16:45.59ID:mccS7x6Z
>>728
ところがどっこい、UWPは消えつつあるのに対し、WinFormsは.NET Coreに移行され、.NET5以降もしぶとく生き延び続ける
0730デフォルトの名無しさん
垢版 |
2020/07/31(金) 09:36:09.26ID:5o3L2EFA
4年前に「Win32は廃止されて今後はUWPの時代」と息巻いてた人たち
20年延々懲りずに「すべてのアプリはブラウザ上で動く時代になる」と言い続けてる人たち

どっちも心底センスがないと思うw
そんなことちょっと考えればありえないって分かるよね
0731デフォルトの名無しさん
垢版 |
2020/07/31(金) 09:41:53.03ID:fk+2L6iO
>>730
概ねあってね?
前者はandroidアプリで
後者はWEBサービスだろ
それしか息してないじゃん

PCだけガラパゴス化して化石が残ってるってだけ
0732デフォルトの名無しさん
垢版 |
2020/07/31(金) 11:12:25.50ID:N0eufbNj
アプリωってストアアプリωωのことか?ωωω
0733デフォルトの名無しさん
垢版 |
2020/08/01(土) 08:23:32.56ID:rtK1naa5
ほらほらストアにアプリ公開したら数千円くれるキャンペーン再開してホラホラ
0734デフォルトの名無しさん
垢版 |
2020/09/02(水) 02:32:00.82ID:6fqNtNLb
うちの会社は特定業界向け製品だけ作ってるけど、旧製品だけWinFormsのまま(もっと古い製品はC++とWin32APIとMFCだけど)
ここ数年内に出した製品はWPFになってるな。
新規でWinFormsは使ってない。
0742デフォルトの名無しさん
垢版 |
2020/09/03(木) 08:18:55.17ID:ea/i/g7l
WPFはほとんど普及しないまま既にForms同様メンテナンスモード(原則的に新機能の追加はなくバグ修正等の止むを得ない対応のみが行われる状態)でありレガシーなので、
特にFormsと比較してWPFが正義ってことはない
0745デフォルトの名無しさん
垢版 |
2020/09/03(木) 12:18:31.00ID:F5m5ASgR
だけど、大昔VBが開発された頃に想定されたような
いろんなdpiが混在するような状況なんてなく、96pdiとその倍ぐらいしか事実上ないわけで、
だったらそんなのどうでもいい気もする
0746デフォルトの名無しさん
垢版 |
2020/09/03(木) 12:56:49.83ID:+QaKkUR1
>>745
スケーリングは標準で25%刻みで350%まであるけど?
最近のノートPCやタブレットは最初からスケーリング設定されているし
特にSurfaceなんか滅茶苦茶解像度高いからスケーリング必須
0747デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:02:08.77ID:O2zrguk1
その倍数の環境が一般的になってきてるからスケーリング対応が必要なんだが
0748デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:19:37.70ID:F5m5ASgR
どうでもいいの意味は対応しなくていい、ではなく
システムが中途半端な対応しか用意してないWindows Formでも
なんとかなっちゃうでしょって話。

理論上はいろんなdpiが存在する前提になってるが、現実的には96dpiと
その2倍ぐらいしかないんだから。
25年前には想定されてなかったCRTの完全追放が早期に実現したからね。
0749デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:24:38.58ID:F5m5ASgR
ちょっと思い出したけど、WPFでは1ピクセル幅の水平垂直の直線が綺麗に描画できない(ピンボケになる)
問題があったけど、あれは4Kとかの環境では気にならないのかな
0751デフォルトの名無しさん
垢版 |
2020/09/03(木) 19:59:17.63ID:+QaKkUR1
>>748
カスタム設定(最大500%)で1%単位で設定する人は稀だろうけど
標準設定(最大350%)の25%単位の指定は使う人が増えて、解像度のバリエーションも増えたって話なのだが
4Kモニターも少しずつ広まってるし
0752デフォルトの名無しさん
垢版 |
2020/09/05(土) 08:40:32.65ID:MHY1xOGp
その前に、「WinFormsもとっくに高DPIに対応済みだ」って誰か突っ込んでやれよw
0759デフォルトの名無しさん
垢版 |
2020/09/17(木) 08:19:29.64ID:WgqtFT7g
ゲイツはジュニアってよばれてたなのかな
インディージョーンズを思い出す
0760デフォルトの名無しさん
垢版 |
2020/09/17(木) 12:22:44.13ID:OW2OZx8D
middle name Henry の方はご健在
0763デフォルトの名無しさん
垢版 |
2020/09/30(水) 03:00:43.36ID:UkXS54f3
>>755
それでも困らないし全然駄目じゃないから
WPFが10年も普及してない
全然駄目なら完全に淘汰されとるわ
0764デフォルトの名無しさん
垢版 |
2020/09/30(水) 04:21:31.87ID:Zcv1ppLY
Winformでもそれなりにアプリが作れちゃうから、わざわざ新しい手法を覚えようとは思わないよなぁ
0765デフォルトの名無しさん
垢版 |
2020/09/30(水) 05:20:08.84ID:/UKb1qW0
>>763
hidpi対応が全然ダメだって話だしlodpi環境自体が淘汰されてないんだから当たり前じゃろ
0766デフォルトの名無しさん
垢版 |
2020/09/30(水) 07:28:45.65ID:MlAR04xo
>>764
まさにそんな意識の人が多いんだろうなぁ。
ことあるごとに「WPFはいらない」とかアピールしなければ害はないのだが。
0767デフォルトの名無しさん
垢版 |
2020/09/30(水) 07:34:58.16ID:M14URhI0
なんか本気で凝った画面作るならunityとかあるし
工場向けならwinformsだしで
消極的に凝った画面作るときしか選択しないwpf
0770デフォルトの名無しさん
垢版 |
2020/09/30(水) 12:35:11.90ID:NNWpaWfq
お邪魔します、くだんのUnityで
c#を始めてみたんですがデスクトップビルドとHTML5ビルドのクライアントで対戦ゲームを作るようなとき
あるいはゲームでなくてもデータベース参照でも良いですが、
どうやって通信の仕組み作れば良いのでしょうか?
0771デフォルトの名無しさん
垢版 |
2020/09/30(水) 13:19:18.32ID:sYKFg//m
Unityのスレがあるよ
0772デフォルトの名無しさん
垢版 |
2020/09/30(水) 13:22:19.03ID:oivRVKFU
>>770
プロが書かないとそこそこ危険な分野なので、Photonみたいなのを使っとくのが安全じゃないのかな
https://assetstore.unity.com/packages/tools/network/photon-unity-networking-classic-free-1786
個人のゲームで無料の20CCUを使い切ったら大したもんだろうし、それを超えても500CCUまではかなり安く使えるんで、とんでもない大ヒットしない限りこれがいいよ
0773デフォルトの名無しさん
垢版 |
2020/09/30(水) 13:49:11.25ID:NNWpaWfq
>>771
ネットワーク通信の書き方ってUnity操作のスレなんだろうか?そこもよくわからない・・
>>772
ありがとうございます
c#始めて1週間程度なもんでココのスレ来たんだけど
ローカルでちょこっと遊んでみたいだけなんで
photonてどういうアセットなのか?
ccuが何か?すら知らなかったんで
そのあたりを調べてみたいと思います。
どうもでした。
0775デフォルトの名無しさん
垢版 |
2020/09/30(水) 22:58:13.59ID:88URXoRi
>>232
> WinformもWPFもやったことない人なら、どっちでも楽さは変わらない
ってことは絶対ない
覚える分量もぜんぜん違うし
特にWPFとMVVMと一緒に覚えないといけないのは難関すぎる
c#精通してる人たちでも移行がすんなりいかなかったのにふざけるなよほんと
0776デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:17:51.70ID:AZmvyllE
>>774
それを言ったらWinformsもサブセットだしWPFもサブセットだし大体がサブセットになるじゃん
0777デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:32:40.97ID:FlnFD5lW
>>775
MVVMは必須じゃないぞ
MVVMやらないならそんなに差があるとは思わないな
MVVMまで覚えるなら確かに学習量が全然違う

つーか、1年以上前の発言にレスすんなよw
0778デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:38:46.92ID:wQcBlxXT
ボタンを置いてダブルクリックするとイベントハンドラが自動的に作られる…
みたいな作りやすいUIが早くできればいいのになー
0781デフォルトの名無しさん
垢版 |
2020/10/01(木) 02:42:28.23ID:zz0NqDNj
WinFormsを選択する理由がない

C#はXamarin, Unity, WPFでOK
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況