ふらっと C#,C♯,C#(初心者用) Part141
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 >>679 いえ、アルファ値が0なので完全に透明で何も見えないのでARGB(0,0,0,0) と区別はつかないですが、 メモリ上のビットマップの内容にはアルファが0でも赤と緑の値に128や255の値を書き込めますよね。 そういう描画(つまり半透明演算をしない)がしたいんです。 >>680 目視できないくらい薄い黄色で描画されました。 何度も重ね描きしたら、うっすらと黄色が見えてきました。 不透明度128なら半透明の黄緑色で描画されます。 >>681 this.bmp は画像ファイルなので、その上に上書きで円を描画すれば元の画像が消えますよね? そうはならず、元の画像のままなので期待通りにはなりませんでした。 >>682 >その上に上書きで円を描画すれば元の画像が消えますよね 透過で上書きして消えるペイントソフトある?普通は消しゴムじゃないか? それなら範囲指定するデータを設定してそれに沿ってBitmapDataで画素を置き換えたことしかない ARGB(0, 128, 255, 0)で描画したはずが 抜き出してみるとARGB(0, 0, 0, 0)になってしまうとか? それとも ARGB(0, 128, 255, 0)での描画or透過処理で、画像に目で見える影響を与えたいとか? >>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透過処理で、画像に目で見える影響を与えたいとか? そうです、透明な黄緑で円を描画したのだから、 円の形で透明に切り抜かれてほしいんです。 (更に切り抜かれた部分は透明な黒ではなく、透明な黄緑で) 透明な黄緑の先には元の画像が薄っすら見える方がいいのか? 透明な黄緑一色の均一な色で塗りつぶすのか? >>682 と言うことは、不透明度0の時に特別扱いされてないか確かめないといかんな。 不透明度0って、描かないと判断されてるのかもしれん。 >>685 もう何言ってるのかさっぱりワカンネ ペイントかフォトショでその期待する画像作ってよ 掲示板で一番楽なのは計算式かな? それがformsアプリでできるかどうかって言うと微妙だと思うけど ちょっと思ったのは もしかしてやりたいのはカラーキーの抜き色? >>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)が使えるけど図形を指定するやり方はわからない >>685 なんか思いっきり勘違いしてる気がするけど、アルファが0ってことは 何も上書きしないのと同じことだよw 無色のガラス板を乗せたのと同じだからw >>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 いいえ、やりたいのはカラーキーの抜き色ではないです。 g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; これで透過処理はされなくなるけど、失敗しそうな気がする(RGBがゼロになりそう) 試していなくてスマン >>693 スマホだからzip見れねー 画像で上げ方知らんの? >>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 適当に検証コード書いてみたけど別に変なことしなくても ピクセルにアルファー値を持つビットマップは作れるけど 何がしたいのかな。 面倒くさいから質問ろくに読んでないけど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); } >>700 あ、アルファ値って普通に書くだけでいけるんや んじゃあ、最終出力がpngであるならなんでもできるね 1ピクセルずつアクセスしてRGB取り出してRGBAブッ込めばなんでもできるしそれこそなんでも >>694 それ知らなかったけどおかげでGraphics.Clearにも完全透明色でのRGB設定できないのわかったわw、ありがとう http://bbs.wankuma.com/index.cgi?mode=al2& ;namber=77366&KLOG=131 >>700 >>691 の処理をもっと簡単にやりたいんです。 >>702 の掲示板を見る限り、やはり>>691 でやるしかなさそうですね。 皆様ありがとうございました。 .Netは4.5を指定すればWindows8.1から2004まで追加のアップデートなしで済むんですよね? 最新のVS2019で4.72だかで作って配布したら10でも.netアップデートしなきゃ使えんと文句の嵐でめげた。 なに作ってんのか知らんけど.NET CoreでSCDという手も なぜサポート切れを?4.8で終わりなんだから4.8にしとけ .NET Coreベースの.NET 5に統合 WindowsのOS標準でインストールされてるのはとりあえず当分は.NET Framework 4.8が続くだろうな >>711 winformsかもしくはそれぐらいお手軽なのあるの? .NET Core 3.0でWinFormとWPFは移植されたよ(もちろんWindows版限定だけど) .NET 6以降はXamarinベースの.NET Multi-platform App UIを導入予定だよ https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/ >>707 4.6.1を勧める Win10(初代以外)ならインストール要らず このバージョンを要求する外部ライブラリも多いし ラインタイム依存が嫌なら、 .Net Core 3.1 でランタイム込みの自己完結型アプリを作ればいいんじゃないの。 その分ファイルサイズはでかくなるけど。 そうですか、.netのアップデートは情シスに頼まないと一般ユーザーでは出来ないのがネックです。 会社の端末はwindows updateは殆んどやらないし。 .net位やって欲しいな。 愚痴ってごめんなさい。 >>716 だめ。BindingRedirect周りの設計をミスったことが散々ディスられてMS側も誤りであったと認めている。4.7.2以降が推奨されている。 >>726 ありがとうございます。 確かにこの板だと紛らわしかったですね。 無能winformsプログラマのおいらをMicrosoftは見放してしまうのか・・・ >>728 ところがどっこい、UWPは消えつつあるのに対し、WinFormsは.NET Coreに移行され、.NET5以降もしぶとく生き延び続ける 4年前に「Win32は廃止されて今後はUWPの時代」と息巻いてた人たち 20年延々懲りずに「すべてのアプリはブラウザ上で動く時代になる」と言い続けてる人たち どっちも心底センスがないと思うw そんなことちょっと考えればありえないって分かるよね >>730 概ねあってね? 前者はandroidアプリで 後者はWEBサービスだろ それしか息してないじゃん PCだけガラパゴス化して化石が残ってるってだけ ほらほらストアにアプリ公開したら数千円くれるキャンペーン再開してホラホラ うちの会社は特定業界向け製品だけ作ってるけど、旧製品だけWinFormsのまま(もっと古い製品はC++とWin32APIとMFCだけど) ここ数年内に出した製品はWPFになってるな。 新規でWinFormsは使ってない。 >>734 wpf始めるにはhtmlとか覚える必要ある? >>735 WPFで使うxamlは、ぱっと見はhtmlに近いけどまるで違うから覚える必要はない xmlはマスターしておいた方がいいよな。namespaceとか。 WPFはほとんど普及しないまま既にForms同様メンテナンスモード(原則的に新機能の追加はなくバグ修正等の止むを得ない対応のみが行われる状態)でありレガシーなので、 特にFormsと比較してWPFが正義ってことはない 最近はディスプレイのスケーリング表示に対応させたいからWPFの方が楽だな だけど、大昔VBが開発された頃に想定されたような いろんなdpiが混在するような状況なんてなく、96pdiとその倍ぐらいしか事実上ないわけで、 だったらそんなのどうでもいい気もする >>745 スケーリングは標準で25%刻みで350%まであるけど? 最近のノートPCやタブレットは最初からスケーリング設定されているし 特にSurfaceなんか滅茶苦茶解像度高いからスケーリング必須 その倍数の環境が一般的になってきてるからスケーリング対応が必要なんだが どうでもいいの意味は対応しなくていい、ではなく システムが中途半端な対応しか用意してないWindows Formでも なんとかなっちゃうでしょって話。 理論上はいろんなdpiが存在する前提になってるが、現実的には96dpiと その2倍ぐらいしかないんだから。 25年前には想定されてなかったCRTの完全追放が早期に実現したからね。 ちょっと思い出したけど、WPFでは1ピクセル幅の水平垂直の直線が綺麗に描画できない(ピンボケになる) 問題があったけど、あれは4Kとかの環境では気にならないのかな >>748 カスタム設定(最大500%)で1%単位で設定する人は稀だろうけど 標準設定(最大350%)の25%単位の指定は使う人が増えて、解像度のバリエーションも増えたって話なのだが 4Kモニターも少しずつ広まってるし その前に、「WinFormsもとっくに高DPIに対応済みだ」って誰か突っ込んでやれよw >>752 WinFormsも高DPIに対応してはいるけど面倒臭い .NET CoreのWinformsでも普通にコントロール崩れるから全然ダメ 【速報】ビル・ゲイツ死去 https://hayabusa9.2ch.net/test/read.cgi/news/1600242851/ ゲイツが天国で寂しくないようにこのスレのc#プログラマを30人ほどいっしょにうめたらどうか? ゲイツはジュニアってよばれてたなのかな インディージョーンズを思い出す >>755 それでも困らないし全然駄目じゃないから WPFが10年も普及してない 全然駄目なら完全に淘汰されとるわ Winformでもそれなりにアプリが作れちゃうから、わざわざ新しい手法を覚えようとは思わないよなぁ >>763 hidpi対応が全然ダメだって話だしlodpi環境自体が淘汰されてないんだから当たり前じゃろ >>764 まさにそんな意識の人が多いんだろうなぁ。 ことあるごとに「WPFはいらない」とかアピールしなければ害はないのだが。 なんか本気で凝った画面作るならunityとかあるし 工場向けならwinformsだしで 消極的に凝った画面作るときしか選択しないwpf Web技術使えばいいからな 新規でWPF選ぶ時代ではない Silverlightと同じ WPFも.net5+WinUI3でディスコンだけどな お邪魔します、くだんのUnityで c#を始めてみたんですがデスクトップビルドとHTML5ビルドのクライアントで対戦ゲームを作るようなとき あるいはゲームでなくてもデータベース参照でも良いですが、 どうやって通信の仕組み作れば良いのでしょうか? >>770 プロが書かないとそこそこ危険な分野なので、Photonみたいなのを使っとくのが安全じゃないのかな https://assetstore.unity.com/packages/tools/network/photon-unity-networking-classic-free-1786 個人のゲームで無料の20CCUを使い切ったら大したもんだろうし、それを超えても500CCUまではかなり安く使えるんで、とんでもない大ヒットしない限りこれがいいよ >>771 ネットワーク通信の書き方ってUnity操作のスレなんだろうか?そこもよくわからない・・ >>772 ありがとうございます c#始めて1週間程度なもんでココのスレ来たんだけど ローカルでちょこっと遊んでみたいだけなんで photonてどういうアセットなのか? ccuが何か?すら知らなかったんで そのあたりを調べてみたいと思います。 どうもでした。 >>232 > WinformもWPFもやったことない人なら、どっちでも楽さは変わらない ってことは絶対ない 覚える分量もぜんぜん違うし 特にWPFとMVVMと一緒に覚えないといけないのは難関すぎる c#精通してる人たちでも移行がすんなりいかなかったのにふざけるなよほんと >>774 それを言ったらWinformsもサブセットだしWPFもサブセットだし大体がサブセットになるじゃん >>775 MVVMは必須じゃないぞ MVVMやらないならそんなに差があるとは思わないな MVVMまで覚えるなら確かに学習量が全然違う つーか、1年以上前の発言にレスすんなよw ボタンを置いてダブルクリックするとイベントハンドラが自動的に作られる… みたいな作りやすいUIが早くできればいいのになー >>778 VSのWinフォームデザイナで出来てるだろうが WinFormsを選択する理由がない C#はXamarin, Unity, WPFでOK ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる