class MyText { RQ_OBJECT("MyText") private: int rpx,rpy; public: MyText() {rpx=0; rpy=0;} ~MyText() {} void ExecuteText(Int_t event, Int_t px, Int_t py, TObject *sel); }; void MyText::ExecuteText(Int_t event, Int_t px, Int_t py, TObject *sel) { TCanvas * c = (TCanvas *) gTQSender; TPad * pad = (TPad *) c->GetSelectedPad(); if ( event == kButton1Down) { //--quit--// cout << "exiting now"<Disconnect(); delete this; } else if ( event == kMouseMotion ) { pad->GetCanvas()->FeedbackMode(kTRUE); char tmp[32]; sprintf (tmp,"x:%f, y:%f",pad->AbsPixeltoX(rpx),pad->AbsPixeltoY(rpy)); //--delete old text--// if(rpx) gVirtualX->DrawText(rpx, rpy, 0, 1, tmp, 1) ; // this doesn't work //--draw text--// sprintf (tmp,"x:%f, y:%f",pad->AbsPixeltoX(px),pad->AbsPixeltoY(py)); gVirtualX->DrawText(px, py, 0, 1, tmp, 1) ; rpx = px; rpy = py; rtmp = tmp; } static int frameCounter = 0; TVirtualPad *thisPad = TVirtualPad::Pad(); gVirtualX->WriteGIF(Form("%s_%d.png", thisPad->GetName(), frameCounter++)); } void text() { // Create a new canvas. c1 = new TCanvas("c1","Dynamic Slice Example",10,10,700,500); c1->SetFillColor(42); c1->SetFrameFillColor(33); //create a 2-d histogram, fill and draw it TH2F *hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4); hpxpy->SetStats(0); Double_t px,py; for (Int_t i = 0; i < 50000; i++) { gRandom->Rannor(px,py); hpxpy->Fill(px,py); } hpxpy->Draw("colz"); MyText * te = new MyText(); c1->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)", "MyText", te,"ExecuteText(Int_t,Int_t,Int_t,TObject*)"); }