Rysowanie w c++

0

Witam!

piszę pierwszy raz tutaj, właściwie dlatego, że jestem już zdesperowany. jestem inżynierem (drogownictwo), ale lubię programować. Przez całą szkołę robiłem programy w Pascalu, które np. symulowały grawitację kilku ciał (także w 3D wyświetlane metodą cross-eye), jakaś wizualizacja przenikania ciepła przez ściany, obracający się wiatraczek widziany w aksonometrii, itp. no i szybko doszedłem do momentu, gdzie Turbo Pascal był do tego słaby, a obecnie niemożliwy do zastosowania w tym co chcę i potrzebuję zrobić.

studiuję fizę i piszę ostatnio programy do obróbki dużych stert danych (dziesiątki MB) z eksperymentu, oczywiście w c++. powoli zbliża się moment, gdzie chciało by się robić jakieś wizualizacje danych

moje pytanie na początek brzmi: "jaka biblioteka/jaki sposób wykorzystać?"

na google znajduję albo poradniki na yt (10 filmów po 15minut, z których nic nie wynika), mój jeden kolega z informatyki daje mi jakieś tomiszcza i mówi, że żeby narysować pojedynczy pixel to w ogóle powinienem najpierw zainstalować jakieś środowisko, co ma kilka-kilkanaście gigabajtów; drugi kolega z automatyki i robotyki mówi mi coś o mikrokontrolerach karty graficznej, na forach internetowych takie tematy kwitowane są zawsze "poszukaj w google, pełno tego jest"...

może żeby rozjaśnić o co mi chodzi podam ramę programu, którą używałem od przeszło 10 lat w Pascalu:

Kopiuj
program graphica;
 uses crt, graph;
 var s,t:integer;
begin
  clrscr;
 detectgraph(s,t);
 initgraph(s,t,'d:\Folder Macieja\Free Pascal\2.0.0\units\i386-win32\rtl');

 {tresc programu}

 closegraph;
end.

czy coś takiego w C++ W OGÓLE jest możliwe? bo moje dotychczasowe doświadczenia pokazują, że nie, lecz rozsądek i intuicja inżynierska podpowiadają, że kilka dekad rozwoju naszej cywilizacji komputerowej i tysiące miliardów dolarów w nią zainwestowane chyba taką możliwość powinny w końcu ludzkości już chyba przynieść, prawda?

na sam początek chciałbym kogoś poprosić właśnie o opinię która (jeśli jakaś jest) "biblioteka", czy jak to się tam mówi, pozwala możliwie najprościej otworzyć okno z funkcjami takimi jak "putpixel(x,y)" i "clearscreen" lub po prostu rysować na ekranie.

pozdrawiam!

1
TK
  • Rejestracja:ponad 13 lat
  • Ostatnio:20 dni
  • Postów:342
0
Śmigło napisał(a):

Witam!
czy coś takiego w C++ W OGÓLE jest możliwe?

Z tego co wiem to nie, nie ma takiej mozliwosci w standardowym C++. Jedyne co mozesz zrobic to albo skorzystac z zewnetrznych, czesto wieloplatformowych bibliotek albo wywolywac bezposrednio funkcje systemowe.

Pewna liste bibliotek juz dostales. Ja bym do tego dorzucil jeszcze Allegro:

  1. Strona projektu: http://alleg.sourceforge.net/
  2. Tutorial wprowadzajacy: http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Displays
  3. Funkcje, o ktore pytasz: http://alleg.sourceforge.net/a5docs/5.0.10/graphics.html#drawing-operations

Kiedys tego uywalem i pisalo mi sie calkiem fajnie - niestety bylo to lata temu i nie wiem na ile ta biblioteka sie zmienila. Najlepiej bedzie jak przyjrzysz sie calej tej liscie we wlasnym zakresie i wybierzesz sobie taka, ktora Ci bedzie najlepiej odpowiadac.

Tak troche OT: zapoznales sie z biblioteka ODE? Nie jest to biblioteka graficzna, ale fizykom moze sie przydac: http://www.ode.org/

edytowany 1x, ostatnio: tk
KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
0

a QT?


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
TK
Mam jakies dziwne wrazenie, ze autor postu piszac "środowisko, co ma kilka-kilkanaście gigabajtów" mial na mysli wlasnie Qt :) Swoja droga: ktos tutaj niedawno pisal, ze QT to skrot od Quick Time, poniewaz prawidlowa nazwa to Qt :)
KA
@tk hhea tak wiem, ale nie chciało mi się już edytować posta. "środowisko, co ma kilka-kilkanaście gigabajtów" co najwyżej kilka, ale co to jest te kilka GB.
Spine
W erze dysków SSD te "kilka GB", to zaczyna być dużo :D
0

jeśli chodzi o te ODE to fizykom się raczej nie przyda, może jakimś ludkom od budowy maszyn..

podoba mi się opcja opisana na cpp0x.pl, zwłaszcza, że to moja ulubiona strona o c++, ale to allegro też nie wydaje się skomplikowane. robię dość złożone algorytmy, ale nigdy nie robiłem żadnych klas ani obiektów - jak myślicie, lepiej korzystać z WinAPI czy Allegro? to pierwsze wydaje się bardziej przystępne. i ważne pytanie - czy można będzie aktualizować obrazek na bieżąco? chodzi mi o ruch.

jeśli chodzi o ten c++ builder to jest środowisko tak? niewiele z wikipedii zrozumiałem, ale chyba biblioteka się nazywa vcl? wydaje mi się mniej atrakcyjna opcja od winapi i allegro, chyba, że może ktoś uważa, że jest to vcl jest najprostsze. :)

n0name_l
Jesli uwazasz, ze WinAPI jest od czegos bardziej przystepne, to wiedz, ze cos sie dzieje.
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:17 minut
  • Postów:6653
0

Jak chcesz coś prostego i przystępnego, to użyj Pythona + pygame. Nie musisz konfigurować środowiska, ustawiać opcji linkera itp. Wystarczy Ci edytor tekstu, interpreter języka Python i moduł pygame.

Kopiuj
import pygame, sys
from pygame.locals import *

# set up pygame
pygame.init()
# set up the window
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption('Prosty program')
kolor=(255,255,255)

#potrzebne nam funkcje do rysowania
def putpixel(x,y):
	global kolor
	pygame.draw.rect(windowSurface, kolor, (x, y, 2, 2))
def setColor(r,g,b):
	global kolor
	kolor=(r,g,b)
def clearscreen():
	windowSurface.fill((0,0,0))

setColor(255,0,0) # ustawiam kolor czerwony

# rysuje linie o szerokosci 4 ustalonym kolorem od punktu (60, 60) do punktu (120, 60)
pygame.draw.line(windowSurface, kolor, (60, 60), (120, 60), 4)

setColor(0,255,0) # ustawiam kolor zielony

#rysuje piksel ustawionym kolorem na pozycji (100,100)
putpixel(100,100)

#clearscreen() # nie chcemy czyscic, bo nic nie zobaczymy na ekranie

# przerzucam 
pygame.display.update()

# run the game loop
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

Jeśli potrzebujesz jakiejś oklepanej wizualizacji danych, to nie musisz tego programować ręcznie. Możesz rzucić swoje dane na jakiś program/bibliotekę do rysowania wykresów.


🕹️⌨️🖥️🖱️🎮
edytowany 3x, ostatnio: Spine
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:4 minuty
1

jak myślicie, lepiej korzystać z WinAPI czy Allegro? to pierwsze wydaje się bardziej przystępne.
Hmm.

i ważne pytanie - czy można będzie aktualizować obrazek na bieżąco? chodzi mi o ruch.
Tak, można, zarówno w WinAPI jak i w Allegro. We wszystkim właściwie.

W jednym i w drugim zrobisz to czego potrzebujesz. Allegro (i każda inna biblioteka pod Windowsem) i tak korzysta z WinAPI.

Jest też SDL.

TK
  • Rejestracja:ponad 13 lat
  • Ostatnio:20 dni
  • Postów:342
0
Śmigło napisał(a):

jeśli chodzi o te ODE to fizykom się raczej nie przyda, może jakimś ludkom od budowy maszyn..

OK.

Śmigło napisał(a):

robię dość złożone algorytmy, ale nigdy nie robiłem żadnych klas ani obiektów - jak myślicie, lepiej korzystać z WinAPI czy Allegro?

Na stronie projektu Allegro napisane jest, ze jest to biblioteka dla jezkow C i C++. Jezyk C nie jest jezykiem obiektowym (chociaz podobno mozna w nim pisac obiektowo jak sie troche pokombinuje i uzyje takich bibliotek jak GObject - nie uzywalem, wiec szczegolow nie znam) a co za tym idzie biblioteka ta tez obiektowa raczej nie jest - przynajmniej kiedys nie byla i patrzac na fragmenty dokumentacji to dalej nie jest.

Śmigło napisał(a):

to pierwsze wydaje się bardziej przystępne.

Masz dosc specyficzny gust :)

Śmigło napisał(a):

ważne pytanie - czy można będzie aktualizować obrazek na bieżąco? chodzi mi o ruch.

Kiedys napisalem prosta gierke na bazie Allegro i chodzilo to calkiem sprawnie. Nie sadze, aby w nowszych wersjach bylo inaczej :) Wpisz sobie na YouTube fraze "allegro library" - zobaczysz nie tylko tutoriale ale takze przykladowe gry.

Gorzej moze byc wlasnie z WinAPI (dotyczy GDI, bo artykul z cpp0x przypomina mi wlasnie opis GDI) i radzilbym sie dowiedziec czy masz wsparcie ze strony akceleratora. Jezeli tego wsparcia nie ma to animacje moga okazac sie troche mulowate w zaleznosci od tego co wlasciwie chcesz zrobic.

Wracajac do Allegro: dla mnie jest to calkiem fajna biblioteka do grafiki 2D (posiada tez inne funkcjonalnosci, o ktorych nie chce mi sie pisac). Nie wiem natomiast jak sprawdza sie w zastosowaniach 3D i nie wiem czy do 2D nie ma czegos lepszego.

Śmigło napisał(a):

jeśli chodzi o ten c++ builder to jest środowisko tak? niewiele z wikipedii zrozumiałem, ale chyba biblioteka się nazywa vcl? wydaje mi się mniej atrakcyjna opcja od winapi i allegro, chyba, że może ktoś uważa, że jest to vcl jest najprostsze. :)

Tak, C++ Builder to srodowisko, a VCL to biblioteka stworzona raczej do budowania interfejsu uzytkownika niz do zastosowan, o ktore pytasz - nie twierdze natomiast, ze sie nie sprawdzi bo nie probowalem robic takich rzeczy w VCLu. No ale jak rozwarzasz VCLa to warto tez rozwarzyc Qt (nie mylic z Quick Time :))

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:4 minuty
1

Gorzej moze byc wlasnie z WinAPI (dotyczy GDI, bo artykul z cpp0x przypomina mi wlasnie opis GDI) i radzilbym sie dowiedziec czy masz wsparcie ze strony akceleratora. Jezeli tego wsparcia nie ma to animacje moga okazac sie troche mulowate w zaleznosci od tego co wlasciwie chcesz zrobic.

W WinAPI można rysować na różne sposoby:

  • GDI - dość wydajne, ale maksymalnie niewygodne w użyciu. często gdy jest mowa o rysowaniu w WinAPI zakłada się, że chodzi o GDI

  • GDI+ - wygodne, ma duże możliwości (gotowe funkcje do rysowania, wypełniania, efekty) ale niezbyt wydajne

  • DirectDraw - każdy ci powie, że jest przestarzałe, ale działa i nie waham się go użyć. bardzo wydajne, ale ma ograniczone możliwości, co sprawia że trzeba się posiłkować funkcjami GDI albo implementować własne algorytmy rysowania np. linii

  • Direct3D - bardzo wydajne, ale powstało głównie do grafiki 3D, i rysowanie grafiki dwuwymiarowej nie należy do przyjemności.

  • OpenGL (stare) - bardzo wydajne, jw. powstało dla 3D, ale do 2D też się nadaje. wymaga jednak nauki bo mocno odbiega od bibliotek typowo 2D

  • OpenGL (nowe) - armata na muchę, absurdalne wymagania sprzętowe jak na prosty program z grafiką 2D, nie działa na wielu kartach zintegrowanych z powodu braku sterowników

  • Direct2D - zalecane obecnie przez Microsoft. nie mialem do czynienia więc nie komentuję. nie działa pod XP.

Spine
zgadzam się w zupełności, zwłaszcza z opisem OpenGL :)
0

niewiele mi to wszystko mówi. na razie wszystko co udało mi się zrobić to zdecydowanie się na allegro 5 i skonstatowanie, że internet jest pełen śmieci na ten temat

poradnik na cpp0x nie działa, bo:

  1. nawet w najnowszym Devie c++ nie można pobrać aktualizacji (serwer już pewnie dawno nie działa)
  2. na jutubie poradniki są do codeblocksa, visuala i wszystkiego innego.
  3. ściągając tę bibliotekę okazuje się, że jest coś takiego jak wersja binarna i źródłowa
  4. wersja źródłowa się nie kompiluje, bo brakuje jakichś plików, jak ściągnąłem jakąś binarną to skopiowałem te pliki z folderów bin, dll i include, ale przy kompilacji wciąż czegoś brakuje. (kompiluję program skopiowany z cpp0x deklarujący obrazek, ale chyba jeszcze nic nie rysujący)

w sumie nie jestem zaskoczony, bo skoro męczę się już z tym tyle lat, to czemu niby teraz miałoby się udać...

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:17 minut
  • Postów:6653
0

Do wszystkiego źle podchodzisz. Nie jesteś otwarty na nowe/współczesne rozwiązania (przynajmniej jeśli chodzi o dobór środowiska programistycznego).

  1. http://sourceforge.net/projects/orwelldevcpp/ - tutaj się wzięli za rozwijanie Dev C++, ostatnia aktualizacja 5 dni temu. Daruj sobie ten stary Dev C++ z http://www.bloodshed.net/
  2. To oznacza, że tych narzędzi najczęściej się używa i są aktualnie rozwijane.
  3. Allegro jest wyjątkowo toporne jeśli chodzi o konfigurowanie swojego środowiska pracy (przynajmniej jak to kiedyś próbowałem pod Linuksem). Biblioteka SDL jest dużo lepiej pomyślana pod tym względem.
  4. Jak masz jakieś błędy to pokaż je, umożliwi to zdiagnozowanie przyczyny. Na razie domyślam się, że stary Dev C++ ze swoim starym MinGW jest przyczyną (o ile poprawnie podałeś opcje linkera).

🕹️⌨️🖥️🖱️🎮
edytowany 1x, ostatnio: Spine
0

dziś już nie mam siły - nie rozumiem tylko jak to możliwe, że to takie skomplikowane. najchętniej pisałbym programy w notatniku i kompilował je jakimś programem, w którym wystarczy jedno kliknięcie, ale mimo zapewnień znajomego informatyka, że tak się da, to tak się nie dało.

więc oto co zamierzam zrobić jutro:

  • ściągnę najnowszego orwell dev c++,
  • rozpakuję allegro 5.0.12 i tam są foldery bin, lib i include
  • pliki które są w tych folderach skopiuję odpowiednio do folderów bin, lib i include w folderze: "E:\Programowanie\C++\Środowisko\Dev-Cpp\MinGW32" lub podobnym.
  • włączę ten orwell dev c++
  • skopiuję do nowego projektu kod programu stąd: http://cpp0x.pl/kursy/Kurs-Allegro-4-x-C++/Odpalamy-Allegro/64

czy są jakieś błędy w moim rozumowaniu? jeśli nie to jutro wkleję tu jakie błędy wystąpiły przy kompilacji ;)

n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
0

czy są jakieś błędy w moim rozumowaniu?

Oczywiscie, chciales "latwo" w "C++". Tak sie niestety nie da.

TK
  • Rejestracja:ponad 13 lat
  • Ostatnio:20 dni
  • Postów:342
0
Śmigło napisał(a):
  • ściągnę najnowszego orwell dev c++,

Nie lepiej zainstalowac Visual C++ w wersji express?

Śmigło napisał(a):
  • pliki które są w tych folderach skopiuję odpowiednio do folderów bin, lib i include w folderze: "E:\Programowanie\C++\Środowisko\Dev-Cpp\MinGW32" lub podobnym.

Robisz sobie troche balagan. Lepiej po prostu wejdz w jakies opcje i dodaj sciezki do plikow naglowkowych i libow (byc moze jeszcze binariow o ile faktycznie to konieczne).

Śmigło napisał(a):

To jest kurs omawiajacy Allegro w wersji 4. Ty natomiast chcesz skorzystac z Allegro 5. Niekoniecznie musza byc kompatybilne. Tutaj masz przykladowy kod: http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Displays

Jak widac w wersji 4 uzywalo sie funkcji allegro_init, podczas gdy w wersji 5 korzysta sie z funkcji al_init. Rowniez sciezki do plikow naglowkowych moga wygladac troche inaczej.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:4 minuty
0

najchętniej pisałbym programy w notatniku i kompilował je jakimś programem, w którym wystarczy jedno kliknięcie, ale mimo zapewnień znajomego informatyka, że tak się da, to tak się nie dało.

Oczywiście że się da.

Kopiuj
c:\myprogs\c>cl wparlpar.c kernel32.lib user32.lib
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.21005.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

wparlpar.c
Microsoft (R) Incremental Linker Version 12.00.21005.1
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:wparlpar.exe
wparlpar.obj
kernel32.lib
user32.lib

c:\myprogs\c>

ale nie po to wymyślili pasażerskie samoloty by uskuteczniać dziś piesze wędrówki ludów.

edytowany 2x, ostatnio: Azarien
0

aż mi się nie chce pisać, co nie działa. bo nic nie działa :P za dużo by pisać. Mimo wszystko naprawdę bardzo Wam dziękuję za pomoc, nie spodziewałem się, że spotkam się z takim zaangażowaniem z Waszej strony, wielkie dzięki za poświęcony czas! :)

jeśli ktoś jest z Warszawy to chętnie umówiłbym się, żeby ktoś tu przyszedł i mi to jakoś ustawił, jakieś korepetycje czy cuś. jak mówi marian paździoch - oczywiście nie za nic, ale też bez przesady, bo szczególnie bogaty nie jestem :) mój e-mail:

m.smiglo <at> tlen . pl

pozdro

0

i sprawa jest raczej pilna, bo w ogóle spie*****łem kompilator. o ja naiwny! myślałem, że zainstalowanie tego orwell deva 5.6.3 w innym folderze nie wpłynie na działanie starego deva 5.4.0 odinstalowałem oba, zainstalowałem starego, zrestartowałem kompa i teraz każdy program kompiluje się w 0,02 sekundy, ale nie powstaje plik wykonywalny. żywioł programowania skutecznie strzeże swych tajemnic :) "chciałeś odkryć moje tajemnice, masz za swoje!"

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:17 minut
  • Postów:6653
0

Zainstaluj Linuksa, to dużo bardziej przyjazne środowisko pracy dla programisty C++.


🕹️⌨️🖥️🖱️🎮
edytowany 1x, ostatnio: Spine
WI
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 9 lat
0

A ja w przeciwieństwie do Spine radze Ci zostać przy Windowsie i zainstalować Visual Studio. Swoją przygodę z programowaniem zacząłem z Dev C++, parę ładnych lat temu, i wówczas nawet przykładowe programy z Symfonii C++ nie chciały mi się tam kompilować - nie wiem jak jest teraz, ale to zakończyło moją przygodę. Dopiero po roku spróbowałem ponownie, tym razem w Visualu i wszystko chodziło jak trzeba. Co do Linuksa, jeśli lubisz się bawić i uczyć nowych rzeczy to ok, jeśli chcesz jednak zrobić ten projekt w miarę szybko i bezboleśnie to Windows najprawdopodobniej w Twoim wypadku będzie lepszy.

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)