TCanvas *c1; TLine *l; int pxold = -1; int pyold = -1; void DrawLine() { c1 = new TCanvas("c1"); TH2F *h0 = new TH2F("h0", "test", 1000, -4, 4, 1000, -4, 4); h0->FillRandom("gaus", 10000); l = new TLine; h0->Draw(); l->Draw(); //Add a TExec object to the canvas c1->AddExec("dynamic","DynamicExec()"); } void DynamicExec() { //c1->GetCanvas()->FeedbackMode(kFALSE); int px = c1->GetEventX(); int py = c1->GetEventY(); int event = c1->GetEvent(); if (event == 1) { pxold = px; pyold = py; return; } if (event == 11) { pxold = -1; pyold = -1; return; } if (pxold == -1 && pyold == -1) return; Double_t xmin = c1->AbsPixeltoX(pxold); Double_t xmax = c1->AbsPixeltoX(px); Double_t ymin = c1->AbsPixeltoY(pyold); Double_t ymax = c1->AbsPixeltoY(py); l->SetX1(xmin); l->SetX2(xmax); l->SetY1(ymin); l->SetY2(ymax); l->Draw(); c1->Modified(); c1->Update(); }