C# powiększanie bitmapy

C# powiększanie bitmapy
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

Witam. Jako że nie jestem jakimś pro w programowaniu w tym języku, postanowiłem zwrócić się tu do Państwa na forum.

Mój problem polega na tym że na zajęcia mam zrobić projekt oscylografu. Oscylograf rysuje się w picturebox'ie jako bitmapa.
Ale żeby nie był to prosty program ( bynajmniej dla mnie taki nie jest), to kazano mi do tego zrobić powiększanie, i przesuwanie tej powiększonej bitmapy. Nie bardzo mam pojęcie jak to zrobić. Przeszukałem trochę stron w googlach lecz i to nie dało mi odpowiedzi.
Widziałem sposoby na powiększenie polegające na ponownym rysowaniu tej bitmapy tylko ileś razy tam powiększonej według trackbar.value. Ale to tylko zżera pamięć. Proszę o pomoc i podpowiedź jak takie coś napisać.

Azarien
znaczy, ile tej pamięci zżera?
KA
nie powiem dokładnie ile, wiem że rysowanie w powiększeniu zajmuje sporo czasu. Widziałem działanie programów osób innych z grupy. Sam nauczyciel też to stwierdził.
UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

e.Graphics.ScaleTransform(float, float)
i TranslateTransform do przesuwania

edytowany 1x, ostatnio: ubuntuser
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

Da się to zastosować do trackbar'a ?

UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

Nie rozumiem?

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

No bo to ma działać na takiej zasadzie że jest picturebox, a pod nim trackbar (jako suwak powiększający ten obraz, zwiększający zoom). Więc pytam czy to da się w jakiś sposób zastosować do trackbar'a ?

UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

Daj to w obsłudze zdarzenia Paint w Pictureboxie. A skalę transformacji uzależnij od Trackbar.Value. W momencie przesunięcia trackbara (Trackbar.Scroll event) odśwież Picturebox.

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

Gdybyś mógł pomóc co źle robię co powinienem dodać, nie znam bardzo dobrze języka. A projekt jednak muszę na zaliczenie oddać. Mam coś takiego

Kopiuj
        public void trackBar1_Scroll(object sender, EventArgs e)
        {
            label1.Text = trackBar1.Value.ToString();

            int value = trackBar1.Value;

            if (trackBar1.Value > 1)
            {
                Graphics graph = Graphics.FromImage(bmp);
                graph.ScaleTransform(bmp.Width * trackBar1.Value, bmp.Height * trackBar1.Value);
                
                pictureBox1.Image = bmp;
                
            }

      }

bmp, to obraz wczytany przez openfiledialog. Myślałem że może w ten sposób podziała, ale po skompilowaniu, przesunięciu trackbar'a obraz znika w ogóle.

edytowany 1x, ostatnio: Kalysto
UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

Rysuj obraz dopiero w obsłudze zdarzenia Paint dla Pictureboxa za pomocą DrawImage.
Wtedy używasz e.Graphics co napisałem w 1 poście.
Przesuwanie możesz zrobić klawiszem myszki, będzie w sumie ciekawsze i lepsze niż scrollbarem i idealnie pasuje do tego co ci powiedziałem wcześniej.

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0
Kopiuj
        
        OpenFileDialog ob;
        Bitmap bmp;
        public void button1_Click(object sender, EventArgs e)
        {

            ob = new OpenFileDialog();
            ob.Title = "Otworz obraz";
            ob.Filter = "All|*.*|jpeg|*.jpeg|jpg|*.jpg";
            ob.FileName = "";

            if (ob.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.ImageLocation = ob.FileName;
                bmp = new Bitmap(ob.FileName);
                pictureBox1.Size = new Size(bmp.Width,
                bmp.Height);
            }

        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {

            Graphics graph = Graphics.FromImage(bmp);

            Point punkt = new Point(100,100);
            graph.DrawImage(bmp, punkt);
        } 

Mam coś takiego ale nie bardzo wiem jak połączyć openfiledialog z metoda picturebox1_paint żeby openfiledialog po naciśnieciu na button otwierał plik, i poprzez picturebox1_paint'a go wyświetlał. Nawet nie wiem czy dobrze ten DrawImage zastosowałem. Pomóż proszę. To nie jest kod do tego oscylografu. To jest do zwykłego obrazka. Staram się na tym skleić coś żeby potem to wmontować do oscylografu.

edytowany 2x, ostatnio: Kalysto
UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0
Kopiuj
private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
 e.ScaleTransform(/*tu Trackbar.Value */ );
            e.Graphics.DrawImage(bmp /* tu pewnie jeszcze jakieś argumenty typu location, size, pisze z glowy */ );


        } 
Kopiuj
if (ob.ShowDialog() == DialogResult.OK)
            {
                bmp = new Bitmap(ob.FileName);
            }
edytowany 1x, ostatnio: ubuntuser
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0
Kopiuj
public void button1_Click(object sender, EventArgs e)
        {

            ob = new OpenFileDialog();
            ob.Title = "Otworz obraz";
            ob.Filter = "All|*.*|jpeg|*.jpeg|jpg|*.jpg";
            ob.FileName = "";
            if (ob.ShowDialog() == DialogResult.OK)
            {
                bmp = new Bitmap(ob.FileName);

            }


        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {

            e.Graphics.ScaleTransform(bmp.Height * trackBar1.Value, bmp.Width * trackBar1.Value );
            e.Graphics.DrawImage(bmp, 100,100);
           
        }

Zrobiłem tak. Nie wiem czy dobrze. Ale tuż po otwarciu programu wyrzuca błąd że wartość bmp = null. Nawet buttona kliknąć nie można.

_13th_Dragon
Po otwarciu programu musisz zdążyć kliknąć button1 wskazać plik i nacisnąć ok przed pierwszym wywołaniem pictureBox1_Paint no ale jak nie jesteś Chuckiem Norrisem to zwyczajnie wstawić warunek omijający rysowanie bitmapy o ile nie jest jeszcze wybrana.
UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

no to daj to co jest w pictureBox1_Paint obecnie w ifie
if (bmp!=null)

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

Teraz w ogóle nie rysuje tej bitmapy. Nic nie rozumiem.

UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

daj caly kod bo moze cos pomieszalismy ;]

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0
Kopiuj
        Bitmap bmp;
        Graphics graph;
        public void button1_Click(object sender, EventArgs e)
        {

            ob = new OpenFileDialog();
            ob.Title = "Otworz obraz";
            ob.Filter = "All|*.*|jpeg|*.jpeg|jpg|*.jpg";
            ob.FileName = "";
            if (ob.ShowDialog() == DialogResult.OK)
            {
                bmp = new Bitmap(ob.FileName);

            }


        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (bmp != null)
            {

                e.Graphics.ScaleTransform(bmp.Height * trackBar1.Value, bmp.Width * trackBar1.Value);
                e.Graphics.DrawImage(bmp, 0,0); //dawalem 100,100 tez bo nie wiem czy to zalezy od poczatku pictureboxa, czy formy
            }
        } 

Otwiera obrazki, ale to nie wygląda w ogóle jakby to były one.
Jakby bardzo powiększone.

edytowany 1x, ostatnio: Kalysto
UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

Co to znaczy "nie wygląda"?
Ile wynosi trackBar1.Value?
Usuń "Graphics graph;" na początku bo nie używasz.

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

Value = 1 dokładnie. Te obrazki wyglądają jakby były powiększone. I to znacznie więcej razy. Usuwałem z kodu ten * trackbar1.Value. Ale to nic nie zmienia. Hmm jak zrobić by picturebox był rozmiaru tego obrazu ?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

e.Graphics.ScaleTransform(trackBar1.Value, trackBar1.Value);


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0
_13th_Dragon napisał(a):

e.Graphics.ScaleTransform(trackBar1.Value, trackBar1.Value);

Nie wyświetla w ogóle obrazka.

Obrazek 200x160 nie mieści się w pictureboxie 400x400.

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

Kompilator wyrzuca błąd że metoda posiada 4 argumenty. Widocznie za dużo.
Sam kod e.Graphics.ScaleTransform(bmp.Width >> 1, bmp.Height >> 1);
Nic nie zmienia.

edytowany 1x, ostatnio: Kalysto
UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
0

Nie wiem co kombinujesz, ale to co powiedziałem i co powiedział trzynasty smok w pierwszym poście, powinno już załatwić sprawę całkowicie. Skala x i y (czyli argumenty w nawiasie) to liczba typu float i jeśli wynosi 1, to obraz jest takiej samej wielkości.

Spróbuj dać
e.Graphics.ScaleTransform(1.5F, 1.5F);
i powiedz co widzisz

edytowany 1x, ostatnio: ubuntuser
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

Nic nie kombinuje. Mam picturebox'a kod cały macie wyżej. Zmieniałem tylko to co pisaliście czyli e.Graphics.ScaleTransform(bmp.Height * trackBar1.Value, bmp.Width * trackBar1.Value); na to co proponowaliście. Sam tego nie rozumiem dlaczego obraz o wymiarach 200x160 nie mieści się w pic o wymiarach 400x400.

ubuntuser napisał(a):

Nie wiem co kombinujesz, ale to co powiedziałem i co powiedział trzynasty smok w pierwszym poście, powinno już załatwić sprawę całkowicie. Skala x i y (czyli argumenty w nawiasie) to liczba typu float i jeśli wynosi 1, to obraz jest takiej samej wielkości.

Spróbuj dać
e.Graphics.ScaleTransform(1.5F, 1.5F);
i powiedz co widzisz

dałem przed tym
picturebox1.Refresh();
e.Graphics.ScaleTransform(1.5F, 1.5F);

i teraz jest cały obrazek.

edytowany 1x, ostatnio: Kalysto
unikalna_nazwa
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 9 lat
0

no przecież jak dajesz
e.Graphics.ScaleTransform(bmp.Height * trackBar1.Value, bmp.Width * trackBar1.Value);

to przy obrazku 200x160 powiększasz go 160 razy w poziomie i 200 razy w pionie
i to jeszcze razy wartość trackbaru

zrób

e.Graphics.ScaleTransform(trackBar1.Value / trackBar1.Max * 1.5f + 0.5f, trackBar1.Value / trackBar1.Max * 1.5f + 0.5f);

gdzie 1.5f + 0.5f to maksymalne powiększenie (2x) a 0.5f to minimalne powiększenie (a właściwie pomniejszenie)


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 3x, ostatnio: unikalna_nazwa
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0
unikalna_nazwa napisał(a):

no przecież jak dajesz
e.Graphics.ScaleTransform(bmp.Height * trackBar1.Value, bmp.Width * trackBar1.Value);

to przy obrazku 200x160 powiększasz go 160 razy w poziomie i 200 razy w pionie
i to jeszcze razy wartość trackbaru

zrób

e.Graphics.ScaleTransform(trackBar1.Value / trackBar1.Max * 1.5f + 0.5f, trackBar1.Value / trackBar1.Max * 1.5f + 0.5f);

gdzie 1.5f + 0.5f to maksymalne powiększenie (2x) a 0.5f to minimalne powiększenie (a właściwie pomniejszenie)

Obrazek jest ale pomniejszony w tej chwili. Jak zrobić by był w oryginalnym rozmiarze i by trackbar odpowiadał za jego powiększenie ?

unikalna_nazwa
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 9 lat
0
Kalysto napisał(a):

Obrazek jest ale pomniejszony w tej chwili. Jak zrobić by był w oryginalnym rozmiarze i by trackbar odpowiadał za jego powiększenie ?

nauczyć się czytać ze zrozumieniem


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0
unikalna_nazwa napisał(a):
Kalysto napisał(a):

Obrazek jest ale pomniejszony w tej chwili. Jak zrobić by był w oryginalnym rozmiarze i by trackbar odpowiadał za jego powiększenie ?

nauczyć się czytać ze zrozumieniem

Przepraszam, już dopatrzałem. A druga część pytania? z tym trackbarem ? Przy wartości 10 (mam od 1 do 10 ustawione), dopiero powiększa się, przy mniejszych nic się nie dzieje.

edytowany 1x, ostatnio: Kalysto
unikalna_nazwa
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 9 lat
0

zmień na
0.5f + 1.5f * trackBar1.Value / trackBar1.Maximum

lub zrzutuj jedną z wartości na (float)
bo inaczej wychodzi dzielenie całkowite

  • dodatkowo - to podejście zakłada że Minimum jest ustawione na 0, a nie na 1

albo łatwiej
zmień całość na:

trackBar1.Value

i będziesz miał powiększenie takie jaka wartość trackbara (od 1x do 10x)
tylko że wtedy nie będziesz miał możliwości zrobienia płynnego powiększenia


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 3x, ostatnio: unikalna_nazwa
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0
unikalna_nazwa napisał(a):

zmień na
0.5f + 1.5f * trackBar1.Value / trackBar1.Maximum

lub zrzutuj jedną z wartości na (float)
bo inaczej wychodzi dzielenie całkowite

albo łatwiej
zmień całość na:

trackBar1.Value

i będziesz miał powiększenie takie jaka wartość trackbara (od 1x do 10x)

Gdy jest e.Graphics.ScaleTransform(trackBar1.Value, trackBar1.Value); przy poruszaniu trackbarem rozmiar obrazka się nie zmienia.

edytowany 1x, ostatnio: Kalysto
unikalna_nazwa
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 9 lat
0
Kalysto napisał(a):

Ale w przypadku gdy zmienię na trackbar1.Value obraz będzie znów te 200 razy powiększony. A nie wiem jak zrobić by ten trackBar1.Value o wartości 1 był równy wartości 1.0F.

nie, nie będzie
już ci się całkowicie miesza ;)

wtedy wpisywałeś bmp.Height - czyli powiększało tyle razy jaka była wysokość obrazka

Kalysto napisał(a):

Gdy jest e.Graphics.ScaleTransform(trackBar1.Value, trackBar1.Value); przy poruszaniu trackbarem rozmiar obrazka się nie zmienia.

u mnie jak najbardziej się zmienia
czy na pewno masz podpięte zdarzenie zmiany rozmiaru do onValueChanged trackbara?

jeśli masz go tylko do onPaint picturebox'a to rozmiar się zmieni dopiero po zasłonięciu i odsłonięciu okna aplikacji


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 3x, ostatnio: unikalna_nazwa
KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:31
0

U mnie to wygląda tak:

Kopiuj
public void button1_Click(object sender, EventArgs e)
        {

            ob = new OpenFileDialog();
            ob.Title = "Otworz obraz";
            ob.Filter = "All|*.*|jpeg|*.jpeg|jpg|*.jpg";
            ob.FileName = "";
            if (ob.ShowDialog() == DialogResult.OK)
            {
                bmp = new Bitmap(ob.FileName);

            }


        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {

            

            

            if (bmp != null)
            {


                    pictureBox1.Refresh();
                    
                    e.Graphics.ScaleTransform(trackBar1.Value * 0.5F +1.5f , trackBar1.Value * 0.5f +1.5f); //przy tym się powiększa z każdą wartością trackbar'a
                  //  e.Graphics.ScaleTransform(trackBar1.Value, trackBar1.Value); //przy tym wyrzuca błąd kompilatora "Parameter is not valid."
                    e.Graphics.DrawImage(bmp, 0, 0); //dawalem 100,100 tez bo nie wiem czy to zalezy od poczatku pictureboxa, czy formy
                

            }
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            label1.Text = trackBar1.Value.ToString();
        }
 
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)