• 締切済み

クリックした位置の値が正確に表示できません。

terra5の回答

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

>ax,ayはクリックした位置、正確にいうとpoint.xとpoint.yですが、都合により1.4で割りax.ayに格納しています。 これに精度の問題はありませんか? 整数で結果保存してますから、元に戻らないのが当然という気がしますが。

yatoko
質問者

お礼

ご回答ありがとうございました。本当に困っています。これからも相談にのってもらえるとうれしいdす。

yatoko
質問者

補足

1.4で割っていることに関してなんですが、point.xとpoint.yをそのまま表示しようとしても、正確な値が表示されませんでした。静止画で行っていた時は、うまくいったのですが、動画で行うようにしてからうまくいかないので、そのへんに問題があるのかもしれません。どうでしょうか?

関連する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( ) の引数やソースの書式を教えてほしいです。

  • 【式の値の問題】

    a,b,x,yがa+b=43,ab=1,x+y=4,xy=2を満たすとき (ax+by)^3+(ay+bx)^3の値は? ヒント X=ax+by,Y=aybxとおく 解ける方がいらっしゃいましたら 解説お願いしますm(_)m

  • 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>は上に書いてあります。 詳しい解説よろしくお願いします。

  • 連立方程式

    2つの連立方程式をもとめます ax+y=1 x+ay=1 から ax+y=1 (1) x+ay=1 (2) を式変形すると a2x+ay=a (3) x+ay=1 (2) となります。 (2)-(3)より -a^2=1-a よ考えたのですがよくわかりません

  • ∇とベクトルの積の表現形式について

    演算子∇とベクトル関数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と表記しただけではどちらになっているか示すことができないと思いますが。あるいはどちらでも同じことになるとか、でしょうか。 よろしくお願いします。

  • 偏微分(外積)

    ベクトルA(Ax,Ay,Az)があったとします。 ∇×Aの場合:(∂Az/∂y)-(∂Ay/∂z),(∂Ax/∂z)-(∂Az/∂x), (∂Ay/∂x)-(∂Ax-∂y)になるとおもいます。 逆にA×∇の場合:Ay(∂/∂z)-Az(∂/∂y), Az(∂/∂z)-Ax(∂/∂z), Ax(∂/∂y)-Ay(∂/∂x)になるとおもいます。 要するに、∇とAをかける順番によって、前者の形であれば Aは中にはいり、後者の形であれば外にでるという形でいいでしょうか?? よろしくお願いします。

  • 連立方程式

    ax+y=1 (1) x+ay=1 (2) について (1)より y=-ax+1 (2)に代入してx+a(-ax+1)=1まではできたのですが (a-1){(a+1)x-1}=0になりません お願いします

  • 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を必ずしなくてはならないなら、消えてしまうのでは困るのです。

  • スクロール位置を中央にしたい

    こんにちは。質問させてください。 クリックした位置に画面がスクロールするものを作っています。 今の状態だとクリックした位置にスクロールするのですが ストップする位置が画面の左上で止まります。 これを画面の中央で止まるようにしたいのです。 ヒントをいただけませんでしょうか。宜しくお願い致します。 // 現在のスクロール量を取得 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 ); } }

  • 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になってしまいます。