お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-05-13 09:28:41

ubuuuuuuntu
新しいメンバ
登録日: 2009-05-13

1点描画なのに二重になってしまいます

お世話になります。

マウスのモーションに合わせて点を描くプログラムを作成しています。
マウスのモーションイベントを感知するためにmotion_notify_event()を使っています。
点を描くためにgdk_draw_point()を使っています。

描画のソースは以下のとおりです


gboolean cb_motion_notify_event
(GtkWidget *widget, GdkEventMotion *event, gpointer user_data)
{

    GdkGC        *gc = widget->style->black_gc;

    gint    x = (gint)event->x;
    gint    y = (gint)event->y;
   
    gdk_draw_point(pixmap,gc,x,y);

    gdk_draw_drawable(widget->window,gc,pixmap,0,0,0,0,-1,-1);
}

この二つの関数を組み合わせると、
どうも(x-1, y-1)の位置に点を再描画してしまい、二重に点を描いてしまいます。


何かお気づきになられたことがありましたら、アドバイスよろしくお願いします。

オフライン

 

#2 2009-05-13 14:41:58

ubuuuuuuntu
新しいメンバ
登録日: 2009-05-13

Re: 1点描画なのに二重になってしまいます

二重描画の件ですが、
調査したところ、環境によっては正常に描画できることが確認できました。

正常に動作した環境:ネイティブなOSとして起動したubuntu 9.04
二重描画してしまう環境:windowsXP(SP3)から仮想化して起動したubuntu9.04 (仮想化マシン:Sun VirtualBox 2.2.0)

仮想化した場合とネイティブ環境とでは動作が異なるという現象は起きるものなのでしょうか?

オフライン

 

Board footer

Powered by FluxBB