Šta je novo?

MS C# Mirror teksta

skydiver021

Slavan
Učlanjen(a)
26.11.2004
Poruke
863
Poena
320
Potreban mi je ispis i pomeranje teksta od dole na gore na ekranu ali da tekst bude kao u ogledalu. Tekst se čita iz fajla i ne sme da beži van vidljivih ivica ekrana.
Pokušao sam sa System.Drawing.Drawing2D.Matrix ali ne znam kako da prelomim tekst da mi ne izlazi van ivica forme-
 
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.ismirrored.aspx

vidi nesto s ovim ako text prikazujes u necemu sto nasledjuje system.windows.forms.control. ne znam dal je bas ogledalo ili samo rtl.

ako ne uspe mozda mozes da overrideujes OnPaint, pustis prvo da ga odradi base metod, a onda uradis e.Graphics.Flip()
pri cemu nemam pojma dal Flip() moras sam da odradis, ili ima vec nesto slicno.
 
Na žalost samo RTL. A mirrored control displays both layout and text from right to left.
 
a probao sam i ovu drugu varijantu i definitivno nije tako lako kao sto bi bilo logicno da jeste... nisam uspeo cak ni da je flipnem, a palo mi je napamet u medjuvremenu da treba paziti i na poziciju kursora.

sve mi deluje da bi pre napravio svoju mirrored kontrolu, nego naterao postojecu da bude mirrored.
 
Kod:
	//ctor
	mirrorbox(void) 
	{
		this->SetStyle(ControlStyles::UserPaint,true);
	}

protected: virtual void OnPaint(PaintEventArgs^ e) override {
			   this->SetStyle(ControlStyles::UserPaint,false);
			   System::Windows::Forms::TextBox::OnPaint(e); //base metod
			   this->SetStyle(ControlStyles::UserPaint,true);
			   e->Graphics->FillRectangle(gcnew SolidBrush(Color::Red),20,20,10,10); //test1
			   e->Graphics->Transform = gcnew Drawing2D::Matrix(-1,0,0,1,0,0); //flip
			   e->Graphics->TranslateTransform(-this->Width,0.0F); //pull back
			   e->Graphics->FillRectangle(gcnew SolidBrush(Color::Blue),10,10,10,10); //test2
			   Diagnostics::Debug::WriteLine("overrriden paint"); 
		   }

protected: virtual void OnTextChanged(EventArgs^ e) override {
			   this->Invalidate(); //force redraw on text change
			   System::Windows::Forms::TextBox::OnTextChanged(e);
		   }

ovako nesto sam probao. UserPaint atribut mora da se postavi da bi onpaint uopste bio pozvan. al onda su slova em ruzna, em se crtaju preko test kvadratica, iako sam pozvao base metod pre nego sto sam ih nacrtao. i probao da ga uokvirim promenama atributa...
i posle svega ispostavlja se da je paint pozvan samo jednom po nastanku kontrole, pa ga forsiram iz ontextchange. al onda je sve jos ruznije... barem se kvadratici flipnu kako treba. naravno, ove flip i translate matrice treba izmnoziti odmah, al mrzelo me da razmisljam, nisam se odavno s tim zezao.

vidi nesto, otkud znam... :p

btw, ovo je c++\cli, al trebalo bi da je jasno sta se desava.
 
Poslednja izmena:
Nazad
Vrh Dno