187 :
181 :
2007/11/18(日) 19:35:19 はい、SQLで済む話なんですけど、 Viewに読み込んでる後なので、そのまま使えれば良いなと。 仕様であれば、仕方ありません。 私の勘違いでView+AndAlsoが使えてないのなら 勿体無いと思ったまでです。
すいません、質問よろしいでしょうか? 現在、簡単なペイント系ツールを作成しています。 拡大縮小機能を実装するべく、 Graphics.DrawImage (Image, Rectangle, Rectangle, GraphicsUnit) にて拡大したBitmapをPictureBox.Imageに代入していますが、 この方法だと、大きな画像を拡大した場合に非常に重くなり、 画像のスクロールもままならなくなってしまいます。 大きい画像を拡大しても重くならない実装方法がありましたら ご教授お願いします。
どれ位なのかしらないけどさ PictureBoxのプロパティで元の比率を保ったまま自動でリサイズしてFitするように描画してくれるのあるじゃない? あれじゃだめっすか?
190 :
189 :2007/11/18(日) 23:08:49
ごめ、読み違えてた スクロールとかしてかつ拡大縮小っつうと以前VB.NETでやったときにAPI使ってやってた それだとWin2000+P4 1.8G Mem512くらいのレベルのマシンでも十分快適に動いたよ 必要があるなら使ったAPIくらい書き込むけど?
191 :
188 :2007/11/19(月) 01:13:29
お願いします!
>大きい画像を拡大しても重くならない実装方法 賢く実装
あんま上級者じゃないから使ってるAPIとかイマイチかもしれないけど CreateCompatibleDC SelectObject ReleaseDC GetStretchBltMode SetStretchBltMode DeleteObject DeleteDC BitBlt StretchBlt 基本は CreateCompatibleDC BitBlt StretchBlt 使って描画関連を行っている感じ これをクラスで独自ラップして適当にイベント出したりしてつかってたよ
そんなややこしいことしなくても発想をちょっと変えるだけでしょ。
変えるというか、普通のWindowsの描画方法で普通にやるだけじゃん。
>>188 のやり方がアブノーマルなんだよ。
何でわざわざビットマップに描画して、それをImageに指定するの。
考え方がヘンテコすぎるよw
コントロールのOnPaintをオーバライドするかPaintイベント捕まえて
普通にコントロールのDCに描画しろよ。
195 :
188 :2007/11/19(月) 19:57:44
ただいま帰りました。
>>193 ありがとうございます!参考にさせていただきます。
>>194 すいません、Windowsプログラミング&C#ともに初めてでして・・・。
出直してきます。
VB2005のWebBrowserコントロールについてなんですが 例えば、WebBrowser1.Navigate("C:\")とすると フォルダの中身が一覧表示されますよね。 この時、表示スタイル(縮小版、並べて表示etc)を、 右クリックのコンテキストメニューで指定するのではなく、 プログラム内部で制御したいのですが、方法がどうしてもわかりません。 ヘルプのメンバ一覧を見てもそれらしきプロパティやメソッドは無かったです。 出来ればWindowsエクスプローラのファイル表示方法をフォルダ毎に取得して、 表示スタイルを同期出来ればベストなんですが、WebBrowserコントロールでは そういう事は不可能なんでしょうか?
>>196 どこかでも同じ質問してたね。
WebBrowserのメンバにそういうプロパティやメソッドがあるかと思うような人だから
説明してもどうかと思うけど、一応書いてみる。
簡単な方法
ネイティブListViewコントロール(SysListView32)のウィンドウハンドルを探して
LVM_GETVIEW / LVM_SETVIEWをSendMessage
面倒くさい方法
リフレクションを使ってWebBrowserのインスタンスからaxIWebBrowser2という名前で
IWebBrowser2インターフェイスを取得。
→IServiceProviderにキャスト
→IShellBrowserをIServiceProvider.QueryService経由で取得
→IShellViewやIFolderViewをIShellBrowser.QueryActiveShellView経由で取得
→いじり放題
いずれにせよ、エクスプローラの設定を読み込んで同期するのは骨でしょう
>>197 マルチですみません。
プログラム内で制御するとなると、結構大変そうですね。
APIやReflectionはほとんど使った事が無いので勉強して試行錯誤してみます。
ありがとうございました。
C++/CLIを使っていて、AxWindowsMediaPlayerコントロール上にD&Dでのファイル読み込みを実装したいのですが、 AllowDropプロパティはあるのに、DragEnter, DragDropイベントがありません。 Win32APIではDragQueryFile()等で実装できましたが、.NET Frameworkではどのようにすれば実現できますか?
.NET2.0でTrayMeter(ネットワーク送受信速度をトレイに表示)作ろうと思います IPV4なんたら使用してそれらしきものは出来たのですが、どうも要らないものまでカウントしているようなのです ローカルエリア接続アイコンが光らない時でも何か受信している様子 もしかして非ユニキャストとか言うものがやって来てるのでしょうか もしそうなら、非ユニキャストの「バイト数」を取ってくる方法を教えてください 非ユニキャストのパケットサイズでもいいです または、ローカルエリア接続のプロパティに出て来る受信バイト数でも構いません よろしくおねがいします
.NET2.0で非ユニキャストパケットのサイズを知る方法はありますか? または非ユニキャスト総バイト数でもいいです ローカルエリア接続のプロパティの受信バイト数が直接取れればベストなんですが IPV4なんたらのは違うようなので
ありゃ 投稿後のリロードで出てこなかったから蹴られたかと思ったorz 201=202=自分です 申し訳ない
204 :
デフォルトの名無しさん :2007/12/20(木) 22:33:29
教えてください。 VS2005 C#を使ってます。 タブコントロールですがCtrl+Tabでタブが切り替わるのですが、これを禁止する方法はありますか? よろしくお願いします
継承して以下のメソッドをオーバーライドでどよ。 protected override bool ProcessCmdKey( ref Message msg, Keys keyData ) { if( ( keyData == ( Keys.Control | Keys.Tab ) ) || keyData == ( Keys.Control | Keys.Shift | Keys.Tab ) ) { return true; } return base.ProcessCmdKey( ref msg, keyData ); }
206 :
デフォルトの名無しさん :2007/12/21(金) 19:33:44
ワタクシも教えて下さい。 VS2005 VBですが、 テーブルレイアウトパネルのサイズを動的に変更したり、 場合によってラジオボタンorチェックボックスの表示を切り替えたりすると 画面描画が遅いのが目立ちます。 PC性能アップ以外に早くなる方法があれば教えて下さい。 C#にすると早くなったりしますか?
詳しくは知らないけど.NET使ってれば同じじゃね? 俺はVBからVC++に乗り換えたけど.NET使ってプログラム組んでるやつはそんなに速度変わらないよ
色々いぢくった後に纏めてRefresh()とかやれば多少はマシになるんでないか 実験してないが
>>206 IDEで実行して言ってないよね?w
Releaseのバイナリを直接動かしてみた?
210 :
CeleronM 1.5G :2007/12/22(土) 10:35:13
>>207-209 ありがとうございます。
描画速度だからC#でも同じですかね。
ちょっと検討してみます。
バイナリ直接でも遅いです。
未だVB詳しくないもんで、特別に何か巧い手があるかなと思ったんですが。
冗長コーディングとかして速さ追求してみます。
211 :
デフォルトの名無しさん :2008/01/04(金) 23:43:37
Matrixについての質問なんですが、指定した点(アンカーポイント)についてのスケール変更 ってどのようにするのでしょうか?一度原点を移動してからスケールを変更しても 原点移動しないでスケール変更したのと同じになってしまいます。 回転や平行移動などは原点の移動で指定した点についての変形ができるのですが、 どうしてもスケール変更だけは上手くいきません。 なぜでしょうか?
ギャァァァァァァァァァ すいません、ageてしまいました。 吊ってきます orz
VS2005 VB で質問です。 条件分岐でファイルがある場合は読み込み、 無い場合は作る。といった感じの動きをしたいんですが、 ファイルが無い場合に、else以下の処理でファイルを作った後に 上に戻ってファイルを読む動きをしてしまいます。 ソースをどこまで書けばいいのか分からなかったのですが、 下記がif文の中身です。勉強がてら2chブラウザを作っていまして。 exit subを入れても動作は同じでした。どこで戻るのか全く分かりません… よろしくお願いします。
If System.IO.File.Exists(CurDir & "\" & MyBordNunber & ".dat") = True Then '取得データがある場合 Dim MydownFile As StreamReader Dim Mytext As String Dim MyLine As Integer = 1 MydownFile = New StreamReader(CurDir & "\" & MyBordNunber & ".dat", Encoding.Default) '改行コード数 Do While -1 Mytext = MydownFile.ReadLine() If Mytext Is Nothing Then Exit Do End If MyLine += 1 Loop RichTextBox1.Text = MyLine
Else '取得データが無い場合 MyHead = "GET /" & MyBordKey & "/dat/" & MyBordNunber & ".dat HTTP/1.0" & vbCrLf & "Host: " & MyHost & vbCrLf & "User-Agent: Monazilla/1.00" & vbCrLf & "Connection: close" '送受信 MyWrite.WriteLine(MyHead) MyWrite.WriteLine("") Mydat = MyReader.ReadToEnd MySocket.Close() 'レスポンス判定 If Mydat.Substring(9, 3) = 200 Then 'dat保存 Dim MyLasttime As String MyLasttime = 1 RichTextBox1.Text = Mydat TextFlag = Mydat.IndexOf(vbCrLf + vbCrLf) + 4 Mydat = Mydat.Substring(TextFlag, Mydat.Length - TextFlag) Dim MydatWrite As New StreamWriter(CurDir & "\" & MyBordNunber & ".dat") MydatWrite.Write(Mydat) MydatWrite.Close() Else RichTextBox1.Text = "見つかりません" End If End If
貼り付けたらネストが…
ごめんなさい。 Handles Button1.Click, Button1.Click と繰り返してました… スレ汚し申し訳ないです。
生兵法は怪我の元。 マジメに基礎から勉強せえや、としかいいようがないと思うけど。。
みなさん ''' とか /// 使ってます?
使ってる
使うてる
使っとう
ファイルあるかな? if (なかった) { ファイルを作る } ファイルを開く ファイルを読む ファイルを閉じる
>>223 作ったばかりのファイルから一体何を読むんだい
225 :
デフォルトの名無しさん :2008/01/17(木) 13:43:09
どうか教えてくださいお願いします。
1.
.NETの文字列型(String)の内部コードってUTF-16ですよね?
以下にそう書いてあるし。
http://msdn2.microsoft.com/ja-jp/library/1w71hb4e (VS.80).aspx
2.
それと以下にはASP.NETでは入出力にUTF-8が使われると書いてありますが、
これはあくまで入出力の問題であって、.NETのString型の内部コードとは無関係ですよね?
http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet16/aspnet16_04.html 3.
そこで気になっているのが、
プロパーから提供されたソースに以下の様なコードがあってですね、
"^[ -~。-゚]+$"
これは正規表現の文字列なのですが、
半角文字のみで構成されている文字列の時にOKとしたい様なのです。
内部コードがUTF-16の場合にこれで上手く行くのか不安です。
.NETのStringの内部コードがUTF-16ならば、正規表現もUTF-16で動く筈ですよね?
#今UTF-16のコードページを見ていたら、半角片仮名の並びがShift_JISと同じでした。
#これはこれで上手く動きそうです。
#ですが、正規表現の内部コードについて知りたいのでお願いいたします。
自分はVB.NET 2005とASP.NETを使ってwebアプリ開発をやっています。
OSはクライアントはWinXPSP2、サーバーはWin2003SP?です。
コード云々より、その正規表現エンジンの仕様を調べる方が先だろう
227 :
デフォルトの名無しさん :2008/01/17(木) 22:41:32
>>225 危ない橋を渡るより、文字数とSJISのEncodingのバイト数が一致するかどうかを調べる
確実な方法に変えた方がいいと思う。
>>226 何いってんだコイツ?
それは確実なのか?
U+FF61-U+FF64: Halfwidth CJK punctuation U+FF65-U+FF9F: Halfwidth Katakana variants
難読化するにはDotfuscatorしかないのかな?買おうとするとやたら高い。 Dotfuscatorの入手手段は、いまのところVisualStudio購入するとついてくるCommunity版か、 販売されてるProfessional版の2択であってる?
フリーで何かあったはず 名前忘れたけど ついでに.NET2.0以降に対応してるかも不明 見つけた時は.NET1.1しかなかったから
フリーのあるのかと思い .NET 難読化 フリー でググったら、 NanDoKu っていうのが見つかった。 更新もされていていま.NET2.0でも使えるらしい。 これ良さそうだね。ありがとう。
フォームをモードレスで表示するけれど、フォームを閉じるまでは呼び出し側を終了しないって言う風にするにはどうすればいいですか?
235 :
234 :2008/01/21(月) 04:12:07
あ、丁度適当なスレを見つけたので移動します。失礼しました。
236 :
お願いします :2008/01/25(金) 18:52:04
フォームAの開くボタンから別フォームをモードレスで表示して 同じくフォームAの閉じるボタンから別フォームを閉じるにはどうしたらいいですか?
お手軽にやるなら new FormB().Show(this)
いやいやいやいや
239 :
デフォルトの名無しさん :2008/01/28(月) 23:56:45
Win32APIまじりの質問になって申しわけありません。 現在C++/CLIを使用して.NETからWin32APIでの非同期IOを行っています。 非同期IOの完了通知にSystem.Threading.Overlappedクラスを使っています。 非同期での書き込みは完了し、待機イベントもシグナルを受信するのですが、 Overlapped.Packメソッドに渡したコールバックデリゲートが呼ばれなくて困っています。 1 Overlappedをインスタンス化する。(hEventは手動リセットイベントオブジェクト asyncはIAsyncResultを実装したクラス Overlapped ^ overlapped = gcnew Overlapped(0 , 0 , IntPtr(hEvent) , async); 2 Packする。 NativeOverlapped * nativeOverlapped = overlapped->Pack(callback , buffer); 3 非同期IOを行う WriteFile(hIO ,Marshal::UnsafeAddrOfPinnedArrayElement(buffer,0).ToPointer() , buffer->Length , NULL , (LPOVERLAPPED)nativeOverlapped); 4 完了通知を受け取った(hEventがシグナルを受信)あとにリソースを開放する Overlapped ^ overlapped = Overlapped::Unpack(nativeOverlapped); Overlapped::Free(nativeOverlapped); で間違いありませんよね? hIOはFILE_FLAG_OVERLAPPEDを設定して開いてあります。 コールバックデリゲートを呼び出すには何か他の操作が必要なのでしょうか?
VS2008 Expressがダウンロードできない。 各製品のWebインストールもできない。 単に休日で混んでるのか、メンテナンス中なの?
嫌われてるんだよ
ワンピーススレって伸びないよね
.NETアセンブリのDLLをネイティブなオブジェクトファイルと静的リンクする場合、 どの段階でアプリケーションドメインが初期化されるのでしょうか。 ole32などを一緒にリンクすると起動時にプロセスの初期化エラーが出るので、 DllMainで何か悪さをしているような気がしてならないのです。
245 :
デフォルトの名無しさん :2008/02/03(日) 21:30:53
.netでC言語をやりたいですが、どこからDLすればいいですか?
.NETフレームワーク向けのCってのはあまり聞かないな C++拡張でいいのならC++/CLIがあるが
C.net なんか新鮮 つーか質問者はC#のことを言っていると思うが
249 :
デフォルトの名無しさん :2008/02/07(木) 18:15:19
CLIのMSによるWindowsへの実装がCLRですよね。 .NETというのは具体的に何を指すんでしょうか? それとも、具体的なものでなく、MSの考える一連の共通な基盤を挿す包括的・抽象的な概念なんでしょうか?
.NET FxはCLRにWPFやWCFなどのライブラリを加えたもの。
嘘です
252 :
249 :2008/02/07(木) 23:44:11
253 :
デフォルトの名無しさん :2008/02/08(金) 13:58:33
すいません、.net2003で ボタンを押してフォームを開く処理で 呼び出し側は操作できるようにしときたいのですが 何回ボタンを押しても1画面以上開かないようにしたいです。 Public frmList As Form public sub openForm() If IsNothing(frmList) Then frmGamen = New frmDataGamen Call frmGamen .Show() End If End Sub それで上記のように作ったのですが これだとcloseした後2度と開けなくなってしまいます。
間違えて途中で送信してしまいました。すいません。
何度も間違えてすいません。
ソースも間違ってました。
Public frmList As Form
public sub openForm()
If IsNothing(frmList) Then
frmList = New frmDataGamen
Call frmDataGamen.Show()
End If
End Sub
これで
ttp://dobon.net/vb/dotnet/form/closeform.html に
>補足:Closeメソッドでフォームを閉じた時は、その後このフォームを表示することはできません。もしフォームを一時的に非表示にするだけであれば、Hideメソッドを呼び出したり・・・
とありますがこれを回避する方法ってありますでしょうか?
何回もすれ汚してすいませんでした。
>>250 .NET Fx=.NET Frameworkの略ですか?
FrameworkをFxと略すのって発音的にちょっと変な気が・・・複数形のFrameworksだったらいいんだけど
>>256 .NET Freamwork FX は開発コードで Feature X の意味だったような・・
製品化された後の名称が.NET .Freamwork 3.0
>>255 >Call frmDataGamen.Show()
は
frmList.Show()
の間違いと考えていい?
それからクラス名は大文字で始める。frmのようなハンガリ記法は避ける。
この場合はFromDataGamenとするのが推奨。
>>257 あれ、WinFXが.NEW Framework 3.0になったと記憶してましたが・・・?
もしかしてその名残で.NET Fxって言うのかなぁ
>>250 は単純にWinFXのタイポだろ?
実際 3.0 = 2.0 + WPF + WCF + WF なんだから
>>258 >それからクラス名は大文字で始める。frmのようなハンガリ記法は避ける。
ここまでは格好良かったのに…!!
>この場合はFromDataGamenとするのが推奨。
Fromだと!?
しかし目から鱗だ。
frmとかlblとかtxtとか普通に使っちゃってるよ。
辞めた方がいいのかな。
ご指摘ありがとうございます。 frmList.Show()の間違いでした。 また自己解決できました。 If IsNothing(frmList) Thenを If IsNothing(frmList) OrElse frmList.IsDisposed then で再表示させることができました。 ありがとうございました
>>260 そうですよね。
>実際 3.0 = 2.0 + WPF + WCF + WF なんだから
あとWCS(Windows CardSpace)もですね。
ところでクラスライブラリやCLRは2.0から「全く」変わってないんでしたっけ?
うん
>>256 .NET Fxって略称はMSFTの人とかが時々使ってるね。
スライドとかで目にすることがある。
>>264 実際のところはバグフィックスとか入ってるらしいから、
全く同じかというとそうでもないかもしれない。
.NET Framework 3.5では既存部分 (2.0, 3.0)にも手が入っていて、 それぞれSP1として公開されている。
ふと思ったんですが どこからも参照されなくなったインスタンスを、GCに回収される前に裏技など使ってとっ捕まえる方法ってあるんですか?それとも原理的に不可能?
っ Finalizeメソッド
271 :
269 :2008/02/10(日) 00:47:35
>>270 あ、Finalizeも定義してない場合です。 なんというか、完全に.NETのメモリ管理領域(マネージヒープ?)に漂ってる場合です
>どこからも参照されなくなったインスタンス
273 :
269 :2008/02/10(日) 02:13:02
忘れることにしますw こういう馬鹿なこと考えるのはちゃんと.NETを勉強してからにしよう。
>>269 インスタンスメソッドへのデリゲートを握られることって参照を握られることに
なるんだっけ?
もしそうでないなら不可能じゃないと思うんだけど、まあそんなことはないよな。
どこからも参照されなくなったら、WeakReferenceもクリアされるかと
参照を持っとくことはできるけどGCをフックできない。
長い弱い参照のWeakReference(object, true)というのはどういうとき使うのだろ。
時々しか必要にならないオブジェクトがあるとして、
そいつのインスタンスをずっと保持してるとメモリが無駄になるし、
かといって必要な都度作成するようにするとパフォーマンスが犠牲になる。
こういう場合の「いいとこどり」狙いでしょ。違ったっけ?
ちなみに
>>275 はナンセンスだよねw
なんでこういう一行レス専門の奴ってアホなんでしょw
>>279 そういう目的に弱い参照を使うなとMSDNに書いてあったと思うよ。
>>279 「長い」弱い参照の意味わかってるかね?
はっきり言って弱参照はなかなか活用しにくい。 javaにある、なんていったかな、ソフト参照だっけかな(違ったかも)? そういうのなら活用できそうなんだがね〜 大抵すぐに思いつく、キャッシュ方面に用途には、 少なくとも単純には使えない(実質うまく動かない)。
>>269 の言ってることを文字通り受け取ればWeakReferenceは違うのだろうけど、
もしオブジェクトの状態を試験的に追跡したいだけなら、
別スレッドからでIsAliveでポーリングすればいいわけだからあながち間違いとも思えない。
「長い」弱い参照については目的はわからないが確認できた動作は
デストラクタが呼び出された後から確保されたメモリが消失するまでの間も
IsAliveがtrueということだった。
「短い」方はデストラクタが呼び出されたときにIsAliveがfalse。
それはきっとファイナライザのことだよね。
>>284 おっと.NETスレだった。C#の用語で書いてしまった。
C#のデストラクタ=ファイナライザということで。C++/CLIだと違うのだよな。
「復活」させた場合でも追跡したい場合に使うのが「長い」弱い参照。 でも復活自体まず使う機会がない。
>>285 C#も2.0からファイナライザという言葉を使うようになりました。