- 締切済み
クリックした位置の値が正確に表示できません。
terra5の回答
- terra5
- ベストアンサー率34% (574/1662)
>ax,ayはクリックした位置、正確にいうとpoint.xとpoint.yですが、都合により1.4で割りax.ayに格納しています。 これに精度の問題はありませんか? 整数で結果保存してますから、元に戻らないのが当然という気がしますが。
関連するQ&A
- マウス位置の色を得る
マウス位置は lParam にあるらしいから typedef struct tagPOINT { LONG x_zahyo_long; LONG y_zahyo_long; }POINT; POINT p; char x_zahyo[5], y_zahyo[5]; として、 case WM_RBUTTONDOWN: p.x_zahyo_long = LOWORD(lParam); p.y_zahyo_long = HIWORD(lParam); sprintf(x_zahyo,"%04d", p.x_zahyo_long); sprintf(y_zahyo,"%04d", p.y_zahyo_long); SetWindowText(hrs, x_zahyo); SetWindowText(hrs, y_zahyo); break; でやってたけど、得られた座標は常に 0001,0001 でした。 本題とは別だけど、4桁表示のやり方で、もっといいソースがあったら 教えてください。 bcc32 では lParam からマウス位置取得は無理ですか? lParam が使えなかったから、 POINT p = { 0,0 }; として、 GetCursorPos( &p ); で座標を得ました。 それで、ウインドウ上のマウスの位置の色を取得するにはどうしたら いいんですか? getPixel( ) の引数やソースの書式を教えてほしいです。
- ベストアンサー
- C・C++・C#
- C++のwindowsアプリケーションについて
windowsアプリケーションで 数字を表示させたいのですができません。 文字列に置き換えないといけないみたいなのですが。なかなかうまくいきませんでした。 :上省略: case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: 描画コードをここに追加してください... int a; a=10; char buf[10]; sprintf(buf,"%d",a); TextOut(hdc,100,20,L"Hello Window!",13); TextOut(hdc,100,50,L"buf",10); としたのですが Hello Window!は表示されるのですが そのしたに10と表示させるにはどうしたらよいでしょうか?? #include <stdio.h>は上に書いてあります。 詳しい解説よろしくお願いします。
- ベストアンサー
- C・C++・C#
- ∇とベクトルの積の表現形式について
演算子∇とベクトル関数Aが∇Aと書かれている場合、これはテンソルとなりますね。(スカラ―関数φだと∇φはベクトルでシンプルでなじみがあります。) このテンソルですが、表現の形式はマトリックスとなりますね。ベクトルの演算子∇とベクトルAで作るマトリックスには2通りの表記法が考えられます。 ∂Ax/∂x ∂Ay/∂x, ∂Az/∂x ∂Ax/∂y ∂Ay/∂y, ∂Az/∂y ∂Ax/∂z ∂Ay/∂z, ∂Az/∂z か ∂Ax/∂x ∂Ax/∂y, ∂Ax/∂z ∂Ay/∂x ∂Ay/∂y, ∂Ay/∂z ∂Az/∂x ∂Az/∂y, ∂Az/∂z です。 どちらになるのか決まっているでしょうか。∇Aと表記しただけではどちらになっているか示すことができないと思いますが。あるいはどちらでも同じことになるとか、でしょうか。 よろしくお願いします。
- 締切済み
- 数学・算数
- GetDC()→ReleaseDC、で打ったものが消える。
void CWatawaView::OnCmdHello() { CDC* pDC; pDC = GetDC(); POINT point; int x,y; GetCursorPos(&point); ScreenToClient(&point); pDC->SetPixel(point); ReleaseDC(pDC); >このプログラムだと「ReleaseDC」の後は打ったドットが消えるのですが 消えないままにしておくにはどうすればよいでしょうか?GetDCの後にはReleaseDCを必ずしなくてはならないなら、消えてしまうのでは困るのです。
- ベストアンサー
- C・C++・C#
- スクロール位置を中央にしたい
こんにちは。質問させてください。 クリックした位置に画面がスクロールするものを作っています。 今の状態だとクリックした位置にスクロールするのですが ストップする位置が画面の左上で止まります。 これを画面の中央で止まるようにしたいのです。 ヒントをいただけませんでしょうか。宜しくお願い致します。 // 現在のスクロール量を取得 function getScroll(){ var x, y; if(document.all !== void 0){ // IE4, IE5, IE6 x = document.body.scrollLeft; y = document.body.scrollTop; }else if(document.layers !== void 0 || (navigator.userAgent.indexOf("Opera") != -1 || window.opera !== void 0)){ // NN4, Opera6 x = window.pageXOffset; y = window.pageYOffset; }else if(navigator.userAgent.indexOf("Gecko") != -1){ // NS6, Mozilla x = window.scrollX; y = window.scrollY; }else{ x = y = 0; } return {x: x, y: y}; } // スクロール始めのスクロール量 var SCROLL ; var divCountScroller = 50 ; // 分割数 // 現在のスクロール位置から、指定座標までスクロールします function scroller( x, y, count ){ if( count === void 0 ){ count = 0 ; SCROLL = getScroll(); } if( count++ < divCountScroller ){ var c = count/divCountScroller ; var nx = SCROLL.x+( x-SCROLL.x )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); var ny = SCROLL.y+( y-SCROLL.y )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); window.scrollTo( nx, ny ); setTimeout( "scroller("+x+","+y+","+count+");", 30 ); } }
- 締切済み
- JavaScript
- C++MFCで変数の値が上書きされてしまいます。
VC++でjpgを読み込んで縮小してモノクロに表示するプログラムを作成しています。画像を走査するときに、あとで使う予定なのでグローバル変数pixに座標と画像の番号と濃度値を保存して、縮小されたモノクロ画像はちゃんと作画されるのですが(縮小化を行う関数内では濃度値も正しい)、別の関数で濃度値を参照すると値がすべて「0」になります。アドバイスいただけたら幸いです。 ヘッダー内での宣言 public: short int pix[490464]; メインダイアログのソース抜粋 void CxxxxxxxxxDlg::Load(int pictbox); CImage img_org, img_little; CBitmap *myBMP; CDC *pDC = m_pict11.GetDC(); CDC myDC; int x, y; COLORREF col; CString buf; int thr; m_thrmono.GetWindowTextA(buf); thr = atoi(buf); img_org.Load(jpgファイル絶対パス); img_little.Create(234, 160, 24, 0); for(y=0; y<(img_little.GetHeight()); y++){ for(x=0; x<(img_little.GetWidth()); x++){ col = img_org.GetPixel((int)(x*3),(int)(y*3)); pix[x,y,pictbox] = GetRValue(col); if(pix[x,y,pictbox]>thr){ pix[x,y,pictbox] = 255; }else{ pix[x,y,pictbox] = 0; } img_little.SetPixel(x, y, RGB((pix[x,y,pictbox]),(pix[x,y,pictbox]),(pix[x,y,pictbox]))); buf.Format("x:%d y:%d pix:%d", x, y, pix[x,y,pictbox]); m_display.AddString(buf); } } (ピクチャーコントロールへの作画) } int CyyyyyyyyyyyDlg::Recog(int pictbox){ CString buf; for(int y=0; y<160; y++){ for(int x=0; x<234; x++){ buf.Format("pict%d x:%d y:%d -> %d", pictbox, x, y, pix[x,y,pictbox]); m_display.AddString(buf); } } return distance; } 上の関数でリストボックス(コントロール変数m_display)には0か255が入っているのですが、下の関数ではリストにはすべて0になってしまいます。
- ベストアンサー
- C・C++・C#
お礼
ご回答ありがとうございました。本当に困っています。これからも相談にのってもらえるとうれしいdす。
補足
1.4で割っていることに関してなんですが、point.xとpoint.yをそのまま表示しようとしても、正確な値が表示されませんでした。静止画で行っていた時は、うまくいったのですが、動画で行うようにしてからうまくいかないので、そのへんに問題があるのかもしれません。どうでしょうか?