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

■ このスレッドは過去ログ倉庫に格納されています
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
http://mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/03/13(水) 12:13:36.73ID:9kZ0LY+Wa
この人は自分で調べようとせずに一から十まで人に聞いて
結局何も作れない人だから答えても意味がないぞ
> listviewの使い方について、超初心者向けに解説してるサイトを教えてください
> ファイラを作成しているのですが、ツリービューでPC内のフォルダを検出する方法について、
> ソフト上でファイルにアクセスして、フォルダの中身などを表示したいのですが、まず何のフォームを使えばいいんでしょうか?
> c#でスクリーンショット撮影するソフトは不可能ですか?
> 個々のサンプル通りにゲームを作成中なのですが、paintイベントハンドラってなんでしょうか
> c#のフォームで、タイルマップエディタのようなものを作りたいのですが、どのような情報を調べたらいいでしょうか
前スレから適当に拾ってきたけどこんな有様で何一つ出来ちゃいない
2019/03/13(水) 12:20:15.25ID:XeHQsN66a
>>11
気に入らなきゃ君が放置すりゃいいだけ
馬鹿じゃないの
2019/03/13(水) 12:40:23.19ID:VDijyjbrp
>>10
作れますよ
なぜ作れないと思ったのですか?
理由を述べなさい
2019/03/13(水) 13:58:05.51ID:Jw+SxIpH0
>>12
罵倒レスはやめてくださいってテンプレ読めないんですか?
>>10
C#で「イベントを設定して、処理を設定」は動的にも追加できる
もしくは「つないである(フラグがある)場所に対してだけ処理をする」でもできる
回答してくれた>>13にケンカ売ったんだからけじめ付けてくださいね
2019/03/13(水) 14:27:21.62ID:ril+FLd/0
>>14
罵倒は良くないらしいぞ
ダブルスタンダードは改めてくださいね
2019/03/13(水) 21:00:51.56ID:JdL8LuNU0
>>11
やりたいこととレベルがあってないんだろうな
ツリーやリストの使い方って俺もどこで覚えたのか忘れちゃった
確か入門書には書いてなかったと思った
2019/03/16(土) 16:15:05.71ID:zOgp3uDK0
GUI ToolKit(?) だけでも、少なくとも、
WinForm, WPF, Xamarine
があり、それに加えて .Net Core, .Net Standard などなどがある。
めちゃくちゃ分かりにくい。結局どれ使えばいいのか。
2019/03/16(土) 16:16:31.68ID:zOgp3uDK0
ををー。UWP(?) まであるんかい!!?
2019/03/16(土) 16:20:48.07ID:zOgp3uDK0
Javaの場合、native コードより遅くなっても、Swingを使っていれば、
本当にほとんど全てのPlatformで動いた。ブラウザの中ですらも。一方、
C#は、起動も起動してからも遅いし、文法やライブラリもVBと似たように
ごちゃごちゃして上に、Multiplatformですらもないようだ。
2019/03/16(土) 16:38:49.34ID:PeRiwHXRd
C#はマルチプラットフォームですけどね
2019/03/16(土) 17:24:58.69ID:V0FrEy2e0
>>17-18
AWT、Swing、JavaFX
がありそれに加えてOracleJDK、OpenJDK(Adopt/Zulu/Corretto etc.)、などなどがある。
めちゃくちゃ分かりにくい。結局どれ使えばいいのか。

ををー。SwingじゃAndroidアプリは作れないかい!!?
2019/03/16(土) 17:40:58.81ID:zOgp3uDK0
>>21
それは、Swing 一択で決まり。美しいし速度面も十分で、完全Multiplatform
で特に欠点が無い。それに、新しい仕様が出てくる速度もゆっくりだし。

それに比べて、C#は全く違う。どんどん仕様が出てくるのに、どれもこれも
汚くて欠点を含む。新しいのが出てきたら、とんでもない欠点を含む。
問題ばかり。
2019/03/16(土) 17:56:01.73ID:V0FrEy2e0
>>22
新しい方のJavaFXがゴミ過ぎてWPFでなくWinformsが使われてるC#といっしょなんですね
2019/03/16(土) 19:02:41.34ID:zOgp3uDK0
>>23
でも、C#の方が混乱が大きいように感じる。
.Net 1つにしても、多種類あり、すぐに方針が変わって、誰もよく理解できてない。
ToolKit に関しては、Java だと Swing 一択で問題ないのに、C#は、誰も1つに
絞り込めないでいる。しかも、C#ではMultiplatFormは現実的には無理。
Javaは、ずっと前からMultiplatformだったのと対照的。
2019/03/16(土) 19:04:54.36ID:cEmRGk9t0
>>24
>C#ではMultiplatFormは現実的には無理
なにか深刻な理由があるのでしょうか?ぜひ伺いたいところです
2019/03/16(土) 19:08:45.59ID:Nd/PIrQa0
>>25
キチガイに絡みなすな
2019/03/16(土) 19:59:22.98ID:lafVI2fNM
マイナーバージョンが一つ違っただけで大騒ぎする
WebLogicなんて無かったんや
2019/03/16(土) 20:07:13.34ID:V0FrEy2e0
>>24
> .Net 1つにしても、多種類あり、すぐに方針が変わって、誰もよく理解できてない。
最近もOracle JDKの有償化に伴い派生の多い代替の選択に混乱している言語があるようですね

> Java だと Swing 一択で問題ないのに
私がここでWinforms一択で問題ないと宣言することと何も変わりませんね

Sun時代はSwingへの投資をトーンダウンさせるほどJavaFX推しの流れも一時期ありましたが
Oracleに移りJavaFX ScriptからFXMLへの移行などWPFなんぞよりよほど混沌とした変遷を経ています

そしてOracle JDKから分離され公式に格落ちになったかと思われたJavaFXですが
しかし上記にある選択肢の一部で同梱は継続され何よりOpenJFXはまだまだヤル気です
2019/03/16(土) 20:13:04.84ID:zOgp3uDK0
>>28
そういう問題じゃないんだよ。Javaの場合、Swingなんかは、IDEなしでも
コードから簡単に記述できる設計になっていたのに対し、C#のはそうなって
ないだろ。IDEと共に使う設計になっていて。
だから、初心者はどれを使っていいか分からず迷惑極まりない状態になって
いる。複雑でプログラムをする前に挫折してしまう人もいるだろう。
MSは元々そういう設計をする会社だったけど。
2019/03/16(土) 20:22:24.31ID:YxxaJZkyM
それ以前にJavaをGUIアプリ作るのに使ってる人なんて「いない」
その事実についてはどう考えてるの?
2019/03/16(土) 20:26:52.95ID:j5QR1E58d
JavaでGUI作ったりIDE拒否したり20年くらい前からタイムスリップしてきたのかな
2019/03/16(土) 20:38:43.16ID:YxxaJZkyM
まあ従来のIDEについては最近はMS界隈でも否定論が主流になりつつあるけどね
IDEはコーディングとデバッグのためだけのツールでよい、
IDEにコードを自動生成させたくなるような作業があるならフレームワークの設計の方を見直すべき、
というのが今時の流れだよ
2019/03/16(土) 20:40:32.57ID:dvZvBBVu0
.Netじゃwindows/mac/linuxのクロスプラットフォームGUIがいつまでたっても作れないから
仕方なくjavaで書くんやで
javaが10数年前にとっくに実現してる事なんだからいい加減追いついてくれー
2019/03/16(土) 20:44:36.00ID:PNvsIlL90
完全敗北を認めた今ならマイクロソフトがGUI toolkit作るならクロスプラットフォームになるだろうが
winrtの登場の頃はまだmicrosoftは敗北を認めてなかったからクロスプラットフォームにならなくて残念..
2019/03/16(土) 20:46:13.35ID:fhPcOkRld
>>32
XAMLやらAndroidのレイアウトXMLやら手書きでも十分かけるけどIDEでイメージ確認しながら書いた方が効率よくね?
2019/03/16(土) 20:46:19.88ID:YxxaJZkyM
>>34
Electronがまさにそうでしょ
今や事実上MSが開発してるようなもんだ
2019/03/16(土) 21:00:58.03ID:V0FrEy2e0
>>29
> そういう問題じゃないんだよ
おや、急に問題がすり替わりましたね

> どんどん仕様が出てくるのに、どれもこれも
> 汚くて欠点を含む。新しいのが出てきたら、とんでもない欠点を含む。

Javaの新しくて汚らしく欠点だらけのJavaFXを忘れてらっしゃるようなので説明を追記したまでですよ
Swingで良いならWinformsで良いとも言わないのが不思議ですね

IDE?
SwingをIDE無しで問題ないというのと同程度にWinformsも問題ないですね
2019/03/16(土) 21:01:35.08ID:YxxaJZkyM
>>35
それは否定しないけど、完璧なGUIデザイナ作るのって大変なんだよ
WinFormsのデザイナはVBやDelphiから受け継がれた長年のノウハウの集大成だし、
WPFにいたっては10年開発しても結局ゴミのまま開発終了
今のPC向けGUIアプリの主流は言うまでもなくWebだけど、現代のWebの開発スタイルにフィットするデザイナをMSが開発し始めたとして、
それが使い物になる頃には開発スタイルはすっかり変わっていて時代遅れの廃棄物になってるわけ
従来型のIDEは技術の進化や流行に追いつけなくなってるんだよ
2019/03/16(土) 21:15:58.85ID:m10rap++a
多少の雑談は容認すべきと思ってるがさすがに度を越している
続きはこちらでどうぞ

ふらっと C#,C♯,C#(議論用)
http://mevius.2ch.net/test/read.cgi/tech/1469538912
2019/03/16(土) 21:30:51.26ID:Nd/PIrQa0
>>38
開発終了したってソース教えて
41デフォルトの名無しさん (ワッチョイ b302-7f+e)
垢版 |
2019/03/17(日) 02:36:23.77ID:k04EM+xl0
>>29
WPFもJavaFXも開発者しか画面デザイン出来ないのが問題になってて、デザイナーに投げられるようにコードから分離する目的で作られたのに。。。

最初から素人用の作りじゃ無い。
42デフォルトの名無しさん (ワッチョイ bf2d-geq4)
垢版 |
2019/03/17(日) 02:57:55.04ID:XTuejaeR0
多くの人がUIデザインのセンスが無いのに、xxML直書きが主流のせいで更に悪くなってる気はするな
C#に限ったことじゃないけどさ
2019/03/17(日) 14:45:31.20ID:nIiKRKOv0
>>41
企業で開発する場合ならその方が良いかも知れんが、個人開発だと、
そういう風にGUIとプログラムを全く分けてしまうのは、面倒なだけ
の事が多い。
2019/03/17(日) 15:01:57.71ID:XvGPMByna
>>43
君は個人開発でどういうものを作っていて具体的にどういう面倒があるの?
45デフォルトの名無しさん (ワッチョイ b302-7f+e)
垢版 |
2019/03/17(日) 15:03:58.84ID:k04EM+xl0
>>43
最初から素人用の作りじゃ無いって書いてるのに、その回答は。。。
2019/03/17(日) 16:07:01.80ID:tI0+M4DZ0
>>45
個人開発=素人
と紐付けるのはおかしい
2019/03/17(日) 16:10:04.12ID:nIiKRKOv0
>>44
>具体的にどういう面倒があるの?
プログラムで論理的に配置した方が柔軟性が増すし、デザイナーを使う
場合よりも作業も短時間で済む事が多い。
2019/03/17(日) 16:14:27.92ID:XvGPMByna
>>47
だから具体的に
あなたは何を作っていて何の作業が短時間に済んだのですか?
2019/03/17(日) 16:29:36.83ID:nIiKRKOv0
MS には潰れてほしいので、MSに今後の方向性を与えるような情報葉与えられない。
2019/03/17(日) 16:47:04.83ID:tI0+M4DZ0
潰れて欲しいのならなんでこのスレ居るのさ
2019/03/17(日) 17:18:35.03ID:X0IS4dBaa
>>50
どの口がそれを言う
スレの趣旨を無視した議論に参加してる君も同類じゃないのか

議論専用のスレがあるんだからそっちでやれよ。
何でわざわざ場違いなスレでやるんだよ。頭悪すぎじゃないのか
ふらっと C#,C♯,C#(議論用)
http://mevius.2ch.net/test/read.cgi/tech/1469538912/
2019/03/17(日) 17:19:24.64ID:8Q3kRdi6d
プログラミングの需要の大多数は企業またはチーム開発だからそっちの方に使い勝手を合わせるのは当然だわな
2019/03/17(日) 19:27:23.84ID:1vkvgzPOM
デバッグが必要な輩が居るようだね
2019/03/18(月) 00:23:18.58ID:BUmRg9/50
>>49
このレスは恥ずかしい
55デフォルトの名無しさん (ワッチョイ 232d-geq4)
垢版 |
2019/03/18(月) 02:32:07.37ID:B+bW3pwA0
DIとグローバル変数おじさんって何が違うのか分からなくなってきたぜ
よく考えたら大して変わんなくないかこれ?
2019/03/18(月) 08:13:37.93ID:qC5UNTtha
>>55
単体テストのときに差し替えるのが目的
テスト書かないんなら普通にnewすりゃいいよ
2019/03/18(月) 09:28:05.63ID:+omKGkAVM
よく考えたのかもしれないけど足らなかったんだな
2019/03/18(月) 11:32:00.82ID:0ez+CkRlM
貴方には知恵が足らないわ
 何気に酷いな
2019/03/18(月) 22:59:36.84ID:7EMewmQs0
ASPはなにからやればいいの?
winFormsとMVCってなにがちがうん?
2019/03/18(月) 23:01:35.90ID:7EMewmQs0
Web Formsか
2019/03/18(月) 23:04:56.58ID:1F2QIikJa
>>59
全くの別物
WebFormsはWinFormsモドキ
MVCはRuby on Railsモドキ
今始めるなら、英語に抵抗がなければ最新のMVC系フレームワークであるASP.NET Core
英語ダメならオワコンRailsかPHPでもやっとけ
2019/03/19(火) 21:52:22.59ID:45LJYysD0
>>61
>英語に抵抗がなければ
というのが、どのくらいのレベルなのか、には興味があります…最近は英語よりも古代語(ラピュタの黒石に刻まれているあんな感じのやつ)のほうに興味があります
ムスカの台詞「読める!読めるぞ!」を私も味わいたいと考えているのです
2019/03/19(火) 22:16:53.20ID:qnLJux/Ma
プログラミングに限らず技術系の文章の英語なんか普通に受験して大学入った
人間なら誰でも読めるw

英語英語言ってる人は逆にいうとその程度の事で自分を差別化できると思ってる人なんだと
思った方がいいよwww
2019/03/19(火) 23:39:24.63ID:TEpP13LQM
>>62
ヴォイニッチ手稿にチャレンジだ
65デフォルトの名無しさん (アウアウエー Sadf-D8OU)
垢版 |
2019/03/19(火) 23:42:07.90ID:lT8ihTqWa
読めなくても良いけどさ

堺筋線 -> Sakai muscle
3両目 -> 3 eyes
天下茶屋 -> World Teahouse

これくらいは変だと自分で気付けないと恥ずかしいぞ
2019/03/22(金) 09:11:49.13ID:Sg7nj/wwM
アップキャスト分かりやすく教えて
何言ってんのかわからん
2019/03/22(金) 10:52:57.55ID:Xx8geMH40
>>65
正しいじゃないか。さすが大阪。間違いを恐れてはいけない
2019/03/22(金) 11:40:01.20ID:pVVdiXqm0
>>66
むしろ何が分からんのか分からんのだが…
class A { }
class B : A { }
クラスAから派生したクラスBがあって
B b = new B();
A a = (A)b; // 暗黙にキャストできるので (A) は不要
B型のインスタンスをA型として扱うこと
2019/03/22(金) 11:45:30.76ID:nPC1T1eJM
型の集合としての包含関係が感覚的に理解できるまでにはわりと時間がかかる
継承とは元のクラスを拡張することであるという言葉に惑わされてはいけない
2019/03/22(金) 12:12:49.38ID:S3zLmlK0M
数値によって変数を使い分けることに関してわからないことがあるので質問させてください

【以下引用】
int型を慣習的に使用することで、他のデータ型に変換する機会を減らすこともできる。
小さい値を扱うことがわかっている場合は、int型よりもbyte型のような小さい値を格納できる型を使う方がメモリの消費量を減らすことができる。
しかし、宣言される変数の多くはスコープが狭く、メモリ上に存在する期間が短いため、メモリの消費量はあまり重要ではない。


これはつまり、数値を扱う場合の変数は基本的にintを使ったほうがよく、必要があればbyteなどの変数を使ったほうがいいということですか?
それともどんな数値でも変数の使い分けをせず、intを使ったほうがいいということですか?
2019/03/22(金) 12:38:37.72ID:nPC1T1eJM
>>70
一般論として、ユーザーコード内で宣言した単独の変数のメモリ消費量が問題になることは「全く」「無い」
巨大な配列を必要とする場合を除けばintでよい
2019/03/22(金) 12:50:16.68ID:S3zLmlK0M
>>71
わかりました
親切に教えていただきありがとうございました
73デフォルトの名無しさん (ワッチョイ 6b2d-yExI)
垢版 |
2019/03/22(金) 17:45:07.05ID:piAmWzDj0
ちょっと上で英語の話題があったついでに用語について教えてほしいんだけどさあ
Concurrency = Asynchronous processing
って理解であってるん?
2019/03/22(金) 17:48:21.39ID:nPC1T1eJM
>>73
間違ってる
シングルスレッドでも非同期プログラミングは必要
75デフォルトの名無しさん (ワッチョイ 6b2d-yExI)
垢版 |
2019/03/22(金) 17:58:40.45ID:piAmWzDj0
Concurrency ∈ Asynchronous processing
こんな感じ?
2019/03/22(金) 18:04:58.89ID:nPC1T1eJM
>>75
間違ってる
並列処理だからといって非同期プログラミングが必要とは限らない
fork-joinなんて普通に同期処理
77デフォルトの名無しさん (ワッチョイ 6b2d-yExI)
垢版 |
2019/03/22(金) 18:19:57.20ID:piAmWzDj0
確かにそうだわ
ただなんかしっくり頭に入らないんで、良い図かなんかないかな
2019/03/23(土) 05:06:26.15ID:RPbAWfs10
SOAP Webサービス(asmx)のC#からの呼び出しで質問なんだが、UserAgentってどうやって設定すればいいの?
ttps://www.ipentec.com/document/csharp-call-soap-web-service
ちなみにここの手順で実装してる
2019/03/23(土) 12:40:40.84ID:RPbAWfs10
soapのUserAgentの追加だけど自己解決したので書いとく
OperationContextScopeにsoapのInnerChannelを渡してOparationContext.Current.OutgoingMessagePropertiesを設定すればよかったみたい
2019/03/23(土) 14:20:50.44ID:xq0oZv2H0
↓こういうデータを保持するためのクラスってなんていうの?EF使わない場合DTOって言わないね?
class Hoge
{
ID { set; get; }

Name { set; get; }

Age { set; get; }

Biethday { set; get; }
}
2019/03/23(土) 14:37:47.12ID:YFI8vOIVM
>>80
貧血ドメインクラス
2019/03/23(土) 15:46:27.60ID:1EN9Vx8A0
>>80
POCO
2019/03/23(土) 16:59:05.27ID:oDoWSLunM
デザパタ扱ってて比較的に新しい書籍教えて
2019/03/24(日) 01:13:49.97ID:yH9zM0xm0
たすけて!
Parallel.Forから
Staticなプログレスバー呼びまくったのに一度も実行時エラーでなかったの
なんで?正常な流れなの・
2019/03/24(日) 01:15:19.62ID:GJ0JjoCX0
>>84
UIを操作できるのはUIスレッドだけ
2019/03/24(日) 01:16:53.70ID:yH9zM0xm0
>>85
プログレスバーはWin7のころの
タスクバーのプレグレスバーなんだよ
2019/03/24(日) 01:18:41.54ID:yH9zM0xm0
Nugetでこれ入れて出せるようになるやつ
Windows7APICodePack

これな
using Microsoft.WindowsAPICodePack.Taskbar;
2019/03/24(日) 01:19:01.98ID:yH9zM0xm0
中でなんかしてるんだろうか
2019/03/24(日) 16:11:44.19ID:SrH2ZhCU0
>>80
パット見、見た目が、JavaScript の JSON 形式に似てる。
2019/03/24(日) 16:19:26.01ID:C+8PS15Z0
それはおめめかおつむがヤバいな
2019/03/24(日) 17:04:29.99ID:GJ0JjoCX0
>>87
だからUIスレッドから操作しろって
https://www.atmarkit.co.jp/ait/spv/1508/26/news029.html
2019/03/24(日) 17:10:34.23ID:gZMjxNOF0
UIスレッド外からいじったのにエラーにならなかったけどなんで?って質問じゃないのか
2019/03/24(日) 18:55:32.16ID:yH9zM0xm0
>>92
そうそう、そういうこと
Parallelで進捗バー増やしてったのに
順調に増えてって正常終了した

TaskbarクラスはStaticでクラスライブラリ(.dll)
なんか理由わかる人いませんか?
2019/03/24(日) 23:49:11.19ID:z21lQS4L0
ソース見てみたらITaskbarList3::SetProgressValue呼んでるだけだし
アプリ内のウィンドウというよりシェルへのアクセスなら
元々UIスレッドで呼ぶ必要ないんじゃねえの

検証してないけど
95デフォルトの名無しさん (ワッチョイ c6fc-WX4v)
垢版 |
2019/03/25(月) 12:38:16.05ID:M0EtypdC0
ドット絵エディタみたいなのは簡単ですか
2019/03/25(月) 12:38:17.23ID:ZS1E97rBM
>>94
あーシェルの可能性か
なるほど

uiスレッドどころか別プロセスか
盲点だったわ
ありがとう、中身見れたら見てみる
97デフォルトの名無しさん (ワッチョイ 5f7c-PdI2)
垢版 |
2019/03/25(月) 13:14:00.29ID:MuEFgcsw0
>>95
エディタ本体つくるのは簡単
各種画像ファイルフォーマットの読み書きが面倒
2019/03/25(月) 13:55:28.16ID:feShKvG5d
>>97
今はnugetでだいたいのフォーマットのライブラリは取得できるんじゃないかな
2019/03/25(月) 14:00:35.30ID:feShKvG5d
てか、Windowsなら標準のBitmapクラスでメジャーどころは扱えるか
100デフォルトの名無しさん (ワッチョイ c6fc-WX4v)
垢版 |
2019/03/25(月) 16:28:23.69ID:M0EtypdC0
>>97
がんばります
ペイントイベント使うだけですよね
2019/03/25(月) 16:39:58.28ID:CQLZj79N0
DrawImageやBitBlt地獄が待ってるんだろうなw
2019/03/25(月) 22:05:04.34ID:QIzg3qUJ0
>>99
そうだな
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/advanced/using-image-encoders-and-decoders-in-managed-gdi
>>100
PictureBox使った「絵エディタ」で「ペイントイベント」なんか普通使わない
https://www.atmarkit.co.jp/fdotnet/dotnettips/458picboxdraw/picboxdraw.html
>グラフィックの描画に必要なデータ(例えばラインならその始点と終点の座標など)をすべて保持しておき、
>Paintイベント・ハンドラですべてのグラフィックを再描画できるように常に準備しておく必要があることを意味する。
普通は後半に書かれている「Imageプロパティで指定したビットマップに描画」を使う。そうじゃないと保存するときにも苦労する
2019/03/25(月) 22:11:51.58ID:sDjcFKgQa
お絵描きに限らないけど、手順を記録するようにしないとundo実装できなくなるよw
何で偉そうにそういう非常識なことを言うかね
2019/03/25(月) 22:17:28.38ID:QIzg3qUJ0
>>103
何の話しているの?
「図形」じゃなく「ドット」エディタで「手順」記録すると大変なことになるよ
undoは任意の時点のデータを退避したらどうにでもできるよ
2019/03/26(火) 02:29:39.88ID:fe5vrK8S0
自分の経験上、Undo、Redoは、プログラミングが難しいことがある。
2019/03/26(火) 02:46:28.44ID:fe5vrK8S0
参照やポインタの値は、一般にはUndoすると変化するので、Undo、Redoを
任意回数行った場合には「識別子」として役立たないことになる。
だから、Draw系ツール、3Dモデラ、3D-CADなどではポインタ値だけで
直線の接続先などを識別するのは難しい。だからと言って座標値だけで識別
できるかというとそれはそれで無理がある場合が有る。だからID番号を付ける
必要が出てくるかもしれない。
CADで、点が1万個有る場合に全選択してから Move した場合の Undo 情報は、
1万個に上る、と言ったような問題点も耳にした。
2019/03/26(火) 02:51:56.51ID:fe5vrK8S0
ツール上では削除しても、内部的には削除せずにメモリ中にずっと残しておけば、
参照やポインタ値は変化することは無い。これを利用する手もあるかもしれない。
ただし、その場合、プログラミング中、オブジェクトを自由に削除できなくなるので、
未来永劫、そのことに気を使い続ける必要がある。
108デフォルトの名無しさん (オッペケ Sr03-s8oI)
垢版 |
2019/03/26(火) 04:35:48.97ID:6g954Hehr
3Dソフトの操作履歴って入れ替え可能だからな(可能な操作のみだが)
それすらすごい
例えばベンドデフォメーションかけた後にオブジェクト同士をマージ
この操作順を普通に入れ替えられる
操作をフリーズ(固める)しない限りどんな操作でも入れ替え可能

そして上記の履歴操作は機能のうちのほんの一部
2019/03/26(火) 05:21:06.95ID:Wr7XD3bSa
ボタンを押すと、計算してその結果をリッチテキストボックスに表示する、構造的にはシンプルなイベントを作ろうとしています。

private void button_Click(object sender, EventArgs e)
{
リッチテキストボックス.Text=(見出し);
◆計算◆
リッチテキストボックス.AppendText(ここに計算結果を表示);
}

自分としては見出しを表示→◆計算◆(数分かかります)→計算結果表示と、上から順に処理されることを期待しているのだけど
実際は◆計算◆が終了するまで最初のテキスト「見出し」も表示されないのですがどうしてなのでしょうか?
2019/03/26(火) 05:23:41.39ID:BYz/7c7n0
連続した削除は統合したり、塗りつぶしは開始点を覚えたり
色々小技もあるので、一概には言えないと思うけどなぁ

本格的に勉強したいなら、paint.net か pinta のソース読むのお勧め
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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