[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/03 17:51 / Filesize : 300 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名無C mailto:sage [2019/03/07(木) 06:35:41.12 ID:6L3KEJfe0.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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

■関連スレ
C#, C♯, C#相談室 Part93
mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
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
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

29 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:13:04.84 ID:zOgp3uDK0.net]
>>28
そういう問題じゃないんだよ。Javaの場合、Swingなんかは、IDEなしでも
コードから簡単に記述できる設計になっていたのに対し、C#のはそうなって
ないだろ。IDEと共に使う設計になっていて。
だから、初心者はどれを使っていいか分からず迷惑極まりない状態になって
いる。複雑でプログラムをする前に挫折してしまう人もいるだろう。
MSは元々そういう設計をする会社だったけど。

30 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:22:24.31 ID:YxxaJZkyM.net]
それ以前にJavaをGUIアプリ作るのに使ってる人なんて「いない」
その事実についてはどう考えてるの?

31 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:26:52.95 ID:j5QR1E58d.net]
JavaでGUI作ったりIDE拒否したり20年くらい前からタイムスリップしてきたのかな

32 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:38:43.16 ID:YxxaJZkyM.net]
まあ従来のIDEについては最近はMS界隈でも否定論が主流になりつつあるけどね
IDEはコーディングとデバッグのためだけのツールでよい、
IDEにコードを自動生成させたくなるような作業があるならフレームワークの設計の方を見直すべき、
というのが今時の流れだよ

33 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:40:32.57 ID:dvZvBBVu0.net]
.Netじゃwindows/mac/linuxのクロスプラットフォームGUIがいつまでたっても作れないから
仕方なくjavaで書くんやで
javaが10数年前にとっくに実現してる事なんだからいい加減追いついてくれー

34 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:44:36.00 ID:PNvsIlL90.net]
完全敗北を認めた今ならマイクロソフトがGUI toolkit作るならクロスプラットフォームになるだろうが
winrtの登場の頃はまだmicrosoftは敗北を認めてなかったからクロスプラットフォームにならなくて残念..

35 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:46:13.35 ID:fhPcOkRld.net]
>>32
XAMLやらAndroidのレイアウトXMLやら手書きでも十分かけるけどIDEでイメージ確認しながら書いた方が効率よくね?

36 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:46:19.88 ID:YxxaJZkyM.net]
>>34
Electronがまさにそうでしょ
今や事実上MSが開発してるようなもんだ

37 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:00:58.03 ID:V0FrEy2e0.net]
>>29
> そういう問題じゃないんだよ
おや、急に問題がすり替わりましたね

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

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

IDE?
SwingをIDE無しで問題ないというのと同程度にWinformsも問題ないですね



38 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:01:35.08 ID:YxxaJZkyM.net]
>>35
それは否定しないけど、完璧なGUIデザイナ作るのって大変なんだよ
WinFormsのデザイナはVBやDelphiから受け継がれた長年のノウハウの集大成だし、
WPFにいたっては10年開発しても結局ゴミのまま開発終了
今のPC向けGUIアプリの主流は言うまでもなくWebだけど、現代のWebの開発スタイルにフィットするデザイナをMSが開発し始めたとして、
それが使い物になる頃には開発スタイルはすっかり変わっていて時代遅れの廃棄物になってるわけ
従来型のIDEは技術の進化や流行に追いつけなくなってるんだよ

39 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:15:58.85 ID:m10rap++a.net]
多少の雑談は容認すべきと思ってるがさすがに度を越している
続きはこちらでどうぞ

ふらっと C#,C♯,C#(議論用)
mevius.2ch.net/test/read.cgi/tech/1469538912

40 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:30:51.26 ID:Nd/PIrQa0.net]
>>38
開発終了したってソース教えて

41 名前:デフォルトの名無しさん [2019/03/17(日) 02:36:23.77 ID:k04EM+xl0.net]
>>29
WPFもJavaFXも開発者しか画面デザイン出来ないのが問題になってて、デザイナーに投げられるようにコードから分離する目的で作られたのに。。。

最初から素人用の作りじゃ無い。

42 名前:デフォルトの名無しさん [2019/03/17(日) 02:57:55.04 ID:XTuejaeR0.net]
多くの人がUIデザインのセンスが無いのに、xxML直書きが主流のせいで更に悪くなってる気はするな
C#に限ったことじゃないけどさ

43 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 14:45:31.20 ID:nIiKRKOv0.net]
>>41
企業で開発する場合ならその方が良いかも知れんが、個人開発だと、
そういう風にGUIとプログラムを全く分けてしまうのは、面倒なだけ
の事が多い。

44 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 15:01:57.71 ID:XvGPMByna.net]
>>43
君は個人開発でどういうものを作っていて具体的にどういう面倒があるの?

45 名前:デフォルトの名無しさん [2019/03/17(日) 15:03:58.84 ID:k04EM+xl0.net]
>>43
最初から素人用の作りじゃ無いって書いてるのに、その回答は。。。

46 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 16:07:01.80 ID:tI0+M4DZ0.net]
>>45
個人開発=素人
と紐付けるのはおかしい

47 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 16:10:04.12 ID:nIiKRKOv0.net]
>>44
>具体的にどういう面倒があるの?
プログラムで論理的に配置した方が柔軟性が増すし、デザイナーを使う
場合よりも作業も短時間で済む事が多い。



48 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 16:14:27.92 ID:XvGPMByna.net]
>>47
だから具体的に
あなたは何を作っていて何の作業が短時間に済んだのですか?

49 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 16:29:36.83 ID:nIiKRKOv0.net]
MS には潰れてほしいので、MSに今後の方向性を与えるような情報葉与えられない。

50 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 16:47:04.83 ID:tI0+M4DZ0.net]
潰れて欲しいのならなんでこのスレ居るのさ

51 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 17:18:35.03 ID:X0IS4dBaa.net]
>>50
どの口がそれを言う
スレの趣旨を無視した議論に参加してる君も同類じゃないのか

議論専用のスレがあるんだからそっちでやれよ。
何でわざわざ場違いなスレでやるんだよ。頭悪すぎじゃないのか
ふらっと C#,C♯,C#(議論用)
mevius.2ch.net/test/read.cgi/tech/1469538912/

52 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 17:19:24.64 ID:8Q3kRdi6d.net]
プログラミングの需要の大多数は企業またはチーム開発だからそっちの方に使い勝手を合わせるのは当然だわな

53 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 19:27:23.84 ID:1vkvgzPOM.net]
デバッグが必要な輩が居るようだね

54 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 00:23:18.58 ID:BUmRg9/50.net]
>>49
このレスは恥ずかしい

55 名前:デフォルトの名無しさん [2019/03/18(月) 02:32:07.37 ID:B+bW3pwA0.net]
DIとグローバル変数おじさんって何が違うのか分からなくなってきたぜ
よく考えたら大して変わんなくないかこれ?

56 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 08:13:37.93 ID:qC5UNTtha.net]
>>55
単体テストのときに差し替えるのが目的
テスト書かないんなら普通にnewすりゃいいよ

57 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 09:28:05.63 ID:+omKGkAVM.net]
よく考えたのかもしれないけど足らなかったんだな



58 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 11:32:00.82 ID:0ez+CkRlM.net]
貴方には知恵が足らないわ
 何気に酷いな

59 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 22:59:36.84 ID:7EMewmQs0.net]
ASPはなにからやればいいの?
winFormsとMVCってなにがちがうん?

60 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 23:01:35.90 ID:7EMewmQs0.net]
Web Formsか

61 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 23:04:56.58 ID:1F2QIikJa.net]
>>59
全くの別物
WebFormsはWinFormsモドキ
MVCはRuby on Railsモドキ
今始めるなら、英語に抵抗がなければ最新のMVC系フレームワークであるASP.NET Core
英語ダメならオワコンRailsかPHPでもやっとけ

62 名前: mailto:sage [2019/03/19(火) 21:52:22.59 ID:45LJYysD0.net]
>>61
>英語に抵抗がなければ
というのが、どのくらいのレベルなのか、には興味があります…最近は英語よりも古代語(ラピュタの黒石に刻まれているあんな感じのやつ)のほうに興味があります
ムスカの台詞「読める!読めるぞ!」を私も味わいたいと考えているのです

63 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 22:16:53.20 ID:qnLJux/Ma.net]
プログラミングに限らず技術系の文章の英語なんか普通に受験して大学入った
人間なら誰でも読めるw

英語英語言ってる人は逆にいうとその程度の事で自分を差別化できると思ってる人なんだと
思った方がいいよwww

64 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 23:39:24.63 ID:TEpP13LQM.net]
>>62
ヴォイニッチ手稿にチャレンジだ

65 名前:デフォルトの名無しさん [2019/03/19(火) 23:42:07.90 ID:lT8ihTqWa.net]
読めなくても良いけどさ

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

これくらいは変だと自分で気付けないと恥ずかしいぞ

66 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 09:11:49.13 ID:Sg7nj/wwM.net]
アップキャスト分かりやすく教えて
何言ってんのかわからん

67 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 10:52:57.55 ID:Xx8geMH40.net]
>>65
正しいじゃないか。さすが大阪。間違いを恐れてはいけない



68 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 11:40:01.20 ID:pVVdiXqm0.net]
>>66
むしろ何が分からんのか分からんのだが…
class A { }
class B : A { }
クラスAから派生したクラスBがあって
B b = new B();
A a = (A)b; // 暗黙にキャストできるので (A) は不要
B型のインスタンスをA型として扱うこと

69 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 11:45:30.76 ID:nPC1T1eJM.net]
型の集合としての包含関係が感覚的に理解できるまでにはわりと時間がかかる
継承とは元のクラスを拡張することであるという言葉に惑わされてはいけない

70 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:12:49.38 ID:S3zLmlK0M.net]
数値によって変数を使い分けることに関してわからないことがあるので質問させてください

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


これはつまり、数値を扱う場合の変数は基本的にintを使ったほうがよく、必要があればbyteなどの変数を使ったほうがいいということですか?
それともどんな数値でも変数の使い分けをせず、intを使ったほうがいいということですか?

71 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:38:37.72 ID:nPC1T1eJM.net]
>>70
一般論として、ユーザーコード内で宣言した単独の変数のメモリ消費量が問題になることは「全く」「無い」
巨大な配列を必要とする場合を除けばintでよい

72 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:50:16.68 ID:S3zLmlK0M.net]
>>71
わかりました
親切に教えていただきありがとうございました

73 名前:デフォルトの名無しさん [2019/03/22(金) 17:45:07.05 ID:piAmWzDj0.net]
ちょっと上で英語の話題があったついでに用語について教えてほしいんだけどさあ
Concurrency = Asynchronous processing
って理解であってるん?

74 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 17:48:21.39 ID:nPC1T1eJM.net]
>>73
間違ってる
シングルスレッドでも非同期プログラミングは必要

75 名前:デフォルトの名無しさん [2019/03/22(金) 17:58:40.45 ID:piAmWzDj0.net]
Concurrency ∈ Asynchronous processing
こんな感じ?

76 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:04:58.89 ID:nPC1T1eJM.net]
>>75
間違ってる
並列処理だからといって非同期プログラミングが必要とは限らない
fork-joinなんて普通に同期処理

77 名前:デフォルトの名無しさん [2019/03/22(金) 18:19:57.20 ID:piAmWzDj0.net]
確かにそうだわ
ただなんかしっくり頭に入らないんで、良い図かなんかないかな



78 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 05:06:26.15 ID:RPbAWfs10.net]
SOAP Webサービス(asmx)のC#からの呼び出しで質問なんだが、UserAgentってどうやって設定すればいいの?
ttps://www.ipentec.com/document/csharp-call-soap-web-service
ちなみにここの手順で実装してる

79 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:40:40.84 ID:RPbAWfs10.net]
soapのUserAgentの追加だけど自己解決したので書いとく
OperationContextScopeにsoapのInnerChannelを渡してOparationContext.Current.OutgoingMessagePropertiesを設定すればよかったみたい

80 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:20:50.44 ID:xq0oZv2H0.net]
↓こういうデータを保持するためのクラスってなんていうの?EF使わない場合DTOって言わないね?
class Hoge
{
ID { set; get; }

Name { set; get; }

Age { set; get; }

Biethday { set; get; }
}

81 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:37:47.12 ID:YFI8vOIVM.net]
>>80
貧血ドメインクラス

82 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 15:46:27.60 ID:1EN9Vx8A0.net]
>>80
POCO

83 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 16:59:05.27 ID:oDoWSLunM.net]
デザパタ扱ってて比較的に新しい書籍教えて

84 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:13:49.97 ID:yH9zM0xm0.net]
たすけて!
Parallel.Forから
Staticなプログレスバー呼びまくったのに一度も実行時エラーでなかったの
なんで?正常な流れなの・

85 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:15:19.62 ID:GJ0JjoCX0.net]
>>84
UIを操作できるのはUIスレッドだけ

86 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:16:53.70 ID:yH9zM0xm0.net]
>>85
プログレスバーはWin7のころの
タスクバーのプレグレスバーなんだよ

87 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:18:41.54 ID:yH9zM0xm0.net]
Nugetでこれ入れて出せるようになるやつ
Windows7APICodePack

これな
using Microsoft.WindowsAPICodePack.Taskbar;



88 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:19:01.98 ID:yH9zM0xm0.net]
中でなんかしてるんだろうか

89 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 16:11:44.19 ID:SrH2ZhCU0.net]
>>80
パット見、見た目が、JavaScript の JSON 形式に似てる。

90 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 16:19:26.01 ID:C+8PS15Z0.net]
それはおめめかおつむがヤバいな

91 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:04:29.99 ID:GJ0JjoCX0.net]
>>87
だからUIスレッドから操作しろって
https://www.atmarkit.co.jp/ait/spv/1508/26/news029.html

92 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:10:34.23 ID:gZMjxNOF0.net]
UIスレッド外からいじったのにエラーにならなかったけどなんで?って質問じゃないのか

93 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 18:55:32.16 ID:yH9zM0xm0.net]
>>92
そうそう、そういうこと
Parallelで進捗バー増やしてったのに
順調に増えてって正常終了した

TaskbarクラスはStaticでクラスライブラリ(.dll)
なんか理由わかる人いませんか?

94 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 23:49:11.19 ID:z21lQS4L0.net]
ソース見てみたらITaskbarList3::SetProgressValue呼んでるだけだし
アプリ内のウィンドウというよりシェルへのアクセスなら
元々UIスレッドで呼ぶ必要ないんじゃねえの

検証してないけど

95 名前:デフォルトの名無しさん [2019/03/25(月) 12:38:16.05 ID:M0EtypdC0.net]
ドット絵エディタみたいなのは簡単ですか

96 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 12:38:17.23 ID:ZS1E97rBM.net]
>>94
あーシェルの可能性か
なるほど

uiスレッドどころか別プロセスか
盲点だったわ
ありがとう、中身見れたら見てみる

97 名前:デフォルトの名無しさん [2019/03/25(月) 13:14:00.29 ID:MuEFgcsw0.net]
>>95
エディタ本体つくるのは簡単
各種画像ファイルフォーマットの読み書きが面倒



98 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 13:55:28.16 ID:feShKvG5d.net]
>>97
今はnugetでだいたいのフォーマットのライブラリは取得できるんじゃないかな

99 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 14:00:35.30 ID:feShKvG5d.net]
てか、Windowsなら標準のBitmapクラスでメジャーどころは扱えるか

100 名前:デフォルトの名無しさん [2019/03/25(月) 16:28:23.69 ID:M0EtypdC0.net]
>>97
がんばります
ペイントイベント使うだけですよね

101 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 16:39:58.28 ID:CQLZj79N0.net]
DrawImageやBitBlt地獄が待ってるんだろうなw

102 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 22:05:04.34 ID:QIzg3qUJ0.net]
>>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プロパティで指定したビットマップに描画」を使う。そうじゃないと保存するときにも苦労する

103 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 22:11:51.58 ID:sDjcFKgQa.net]
お絵描きに限らないけど、手順を記録するようにしないとundo実装できなくなるよw
何で偉そうにそういう非常識なことを言うかね

104 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 22:17:28.38 ID:QIzg3qUJ0.net]
>>103
何の話しているの?
「図形」じゃなく「ドット」エディタで「手順」記録すると大変なことになるよ
undoは任意の時点のデータを退避したらどうにでもできるよ

105 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 02:29:39.88 ID:fe5vrK8S0.net]
自分の経験上、Undo、Redoは、プログラミングが難しいことがある。

106 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 02:46:28.44 ID:fe5vrK8S0.net]
参照やポインタの

107 名前:lは、一般にはUndoすると変化するので、Undo、Redoを
任意回数行った場合には「識別子」として役立たないことになる。
だから、Draw系ツール、3Dモデラ、3D-CADなどではポインタ値だけで
直線の接続先などを識別するのは難しい。だからと言って座標値だけで識別
できるかというとそれはそれで無理がある場合が有る。だからID番号を付ける
必要が出てくるかもしれない。
CADで、点が1万個有る場合に全選択してから Move した場合の Undo 情報は、
1万個に上る、と言ったような問題点も耳にした。
[]
[ここ壊れてます]



108 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 02:51:56.51 ID:fe5vrK8S0.net]
ツール上では削除しても、内部的には削除せずにメモリ中にずっと残しておけば、
参照やポインタ値は変化することは無い。これを利用する手もあるかもしれない。
ただし、その場合、プログラミング中、オブジェクトを自由に削除できなくなるので、
未来永劫、そのことに気を使い続ける必要がある。

109 名前:デフォルトの名無しさん [2019/03/26(火) 04:35:48.97 ID:6g954Hehr.net]
3Dソフトの操作履歴って入れ替え可能だからな(可能な操作のみだが)
それすらすごい
例えばベンドデフォメーションかけた後にオブジェクト同士をマージ
この操作順を普通に入れ替えられる
操作をフリーズ(固める)しない限りどんな操作でも入れ替え可能

そして上記の履歴操作は機能のうちのほんの一部

110 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 05:21:06.95 ID:Wr7XD3bSa.net]
ボタンを押すと、計算してその結果をリッチテキストボックスに表示する、構造的にはシンプルなイベントを作ろうとしています。

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

自分としては見出しを表示→◆計算◆(数分かかります)→計算結果表示と、上から順に処理されることを期待しているのだけど
実際は◆計算◆が終了するまで最初のテキスト「見出し」も表示されないのですがどうしてなのでしょうか?

111 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 05:23:41.39 ID:BYz/7c7n0.net]
連続した削除は統合したり、塗りつぶしは開始点を覚えたり
色々小技もあるので、一概には言えないと思うけどなぁ

本格的に勉強したいなら、paint.net か pinta のソース読むのお勧め

112 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 06:37:47.03 ID:AEstRBha0.net]
>>109
リッチテキストボックス.Text=(見出し);
リッチテキストボックス.Refresh();//これを挿入
◆計算◆
で意図通りになるはず
「どうしてなのか」はよくわからないけど
https://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html
を参考に考えてみるとアプリケーションキューが空になるまで再描画されないからとかでは

113 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:18:19.55 ID:nfpS3j/TM.net]
ドット絵なんて"■"をフォントサイズと色変えて
200x200でやるとかじゃアカンの?
商用?趣味?

114 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:27:40.46 ID:FWKgfdvb0.net]
お前の息子みたいな小さい世界の話はしてねえんだよ保育所に引っ込んでろ
入れなかったのか?じゃあ死んでろ

115 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:53:32.84 ID:RcQOpHon0.net]
>>109
イベントハンドラーの中で計算しているから、UIスレッドを掴んだままになってる。
非同期処理化すれば解決するが、計算中もUIを触れるから別途対策が必要。ウィンドウかボタンを無効化とか。

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

116 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:55:43.23 ID:fe5vrK8S0.net]
>>108
速度的な問題点を無視すれば、
編集ソフトでファイルを読み込んだ直後から人間が操作したコマンドの履歴を
全て記録しておいて、ファイルを読み込んだ直後から、最初から最後の1つ手前
まで、その履歴のコマンドを順に再実行するようにすればUndoは実現できる
事は出来る。

この方法だと、操作の途中に重たい処理が挟まっていた場合が問題となる。重たい
処理が行われた場合は、処理の最初と最後でデータをファイルに保存してしまって、
Undoするときはそれを「起点」にする方法も考えられる。ただし、この場合は、
ファイルへの保存に時間がかかる問題が残る。

117 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 11:34:27.90 ID:KoWTp9j7d.net]
簡単ですか?くらいの質問する相手なんだから112が言うような実装で良いと思うけど
高機能にしようと思えばいくらでもできるだろうけど既存のドットエディタ使えば?って気もする
勝手に質問を高機能に寄せてああでもないこうでもない言ってても仕方ないよね



118 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 12:05:28.06 ID:NEQZ2SJi0.net]
>>116
ゲームの専門家に聞いたんだけど、実はドットエディタは使ってなくて、
1つのファイルに複数のキャラクタ画像をまとめて、普通のPaintソフトの
拡大鏡機能で作っておいて、ゲームプログラムの方で部分的な四角形領域
を座標で指定して複数のキャラクタとして扱っている、と聞いた。
そして、透明部分は、1つの色を「透明色」として扱ってMaskパターン
を作っていると。WindowsのBitBlt系のAPIなら、透明色をそのまま
指定できるタイプのものも確かあったと思うけど。

119 名前:デフォルトの名無しさん [2019/03/26(火) 12:09:54.76 ID:6g954Hehr.net]
>>115
しかし3Dソフトは激重アプリなのにサクサクとundo redoできる
設定では1000回まで戻れるようにしている
しかも全部メモリに管理しているんじゃないだろうか
設計が凄まじいのだろう

120 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 12:10:33.61 ID:qm+I18En0.net]
>>118
ファイルに落としてるんだよ

121 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 16:10:23.84 ID:ERuMXzNG0.net]
>>117
そういうやり方だってあるしドット絵エディタで全て作ってるのだってあるし普通の絵をドット絵チックに変換するツールを使う場合もある

122 名前:デフォルトの名無しさん [2019/03/26(火) 16:26:20.46 ID:5W15sMAGF.net]
>>120
https://goodbyejapan.net/better-stay-quiet

123 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 16:55:27.87 ID:fe5vrK8S0.net]
>>118
多分、普段のUndo、Redoはメモリ内のみで行っている。
そして、>>108のように、操作者が順序を入れ替えた場合のみ、
どこかの時点を起点として操作をリプレイするようなことをやってる。
だから後者の場合のみは時間がかかるんじゃないかと思うが、滅多に
やることはないので問題ないと考えられているのではなかろうか?

124 名前:デフォルトの名無しさん [2019/03/26(火) 17:53:29.15 ID:6g954Hehr.net]
>>122
3Dソフトはそもそもディペンデンシーグラフで履歴ノードが自由に繋ぎ直せるし、インプットアウトプットもしまくるから
わざわざファイルに出してることはないはず
そしてそれら膨大な数のノードがリアルタイムで動作したりするからなあ

ほん

125 名前:ニどうやったら普通のPCでもそれなりに高速に動くようなあんなシステム作れるんだ

ちなみにスクリプトやAPIでも履歴作れるんだよな
openChank closeChankの間に入れ込んだ操作の履歴を一つにしてくれる
[]
[ここ壊れてます]

126 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 18:13:18.89 ID:fe5vrK8S0.net]
>>123
履歴のコマンドの順序を入れ替える操作を高速にするアルゴリズム、今、分かった。

1. 操作を変更する時点は、現在の状態からは近いことが多いはず。
2. だから、ツールの内部処理で、現在の状態から小数回 Undoを繰り返せば、その地点にいったん
  戻ることが出来る。
3. そこからは、新しい順番でコマンドを「Replay(再生)」すれば、目的の結果が得られる。

127 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 18:18:17.85 ID:fe5vrK8S0.net]
>>124
・例えば、現在の状態が、ファイル読み込み時点から、1,000回の操作の後だとする。
・現在の状態になる20回前の操作を変更したいとする。その操作は、最初からは980回目である。
・ここで、(1,000回目の)現在の状態から 20回 Undo をすれば、上記の980回目の状態に戻れる。
・この20回くらいの Undo ならば、大して遅くは無いはず。
・出来あがった980回目の状態から、新しいコマンドの列を20回程度繰り返せば、目的のデータが
 完成する。



128 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 19:03:23.56 ID:3EcUlBetM.net]
>>80
プレーンオブジェクトと呼んだりするけどこれと言った決まりはない

129 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 19:19:11.31 ID:NbUyZWCMH.net]
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 58034
https://you-can-program.hatenablog.jp






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<300KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef