Programy napisane w WinaAPI a nowe Windowsy

Programy napisane w WinaAPI a nowe Windowsy
0

Witam,
czy programy napisane w czystym C (nie C++, nie C#) w WinaAPI będą działać na Windowsach 8 - 10?

edytowany 1x, ostatnio: flowCRANE
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
1

Nie rozumiem po co ten masochizm z WinAPI.
MS dba o wsteczną kompatybilność i w 99% przypadkach wszystko będzie działać na nowych systemach Windows-a.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
0

Nie rozwodząc się za bardzo - będę musiał w programie wejść w niskopoziomowe działania na dźwięku i obrazie bez używania opengl, directX itp...
Nie jest tak, że i tak zejdę na poziom winaAPI?

MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:1454
0

Tego ci nie powiemy póki nie doprecyzujesz konkretnie jakie operacje chcesz robić. Ale wielce niewykluczone, że np. do operacji na obrazie to jakieś API Nvidii i AMD będzie wystarczające.


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Poznań
  • Postów:8762
0

A po co zakładasz drugi, bardzo podobny temat?
O kompatybilności WinAPI pisaliśmy w innym wątku - https://4programmers.net/Forum/1539408

Poza tym, skoro zadajesz więcej pytań i tworzysz kolejne wątki, może załóż konto, a nie pisz z anonima? :P


edytowany 2x, ostatnio: cerrato
0

Spokojnie. Wątek nie jest dokładnie o tym samym a co do zbieżności, to popatrz na godziny (w tym przypadku minuty).
A dwa - przecież cały czas się podpisuję.

cerrato
Tak, podpisujesz się. Ale ja (czy ktokolwiek inny) nie może np. kliknąć na Twój nick i zobaczyć wszystkie Twoje posty. Poza tym ktoś może także wejść jako niezalogowany, wpisać sobie "darek darek" i zszargać Twoją opinię. Nie mogę także (jakbym miał taką potrzebę) wysłać Ci wiadomości prywatnej. I tak dalej ;)
DA
To już się zarejestrowałem ;) darekdarek
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:31 minut
1
darek darek napisał(a):

Witam,
czy programy napisane w czystym C (nie C++, nie C#) w WinaAPI będą działać na Windowsach 8 - 10?

Tak.

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:11 dni
1

WinApi to masochizm i trudno sobie wyobrazić, że chciałbyś tego użyć. Co to za czary chcesz zrobić, że nie wystarczy np. SDL czy Allegro, skoro nie chcesz OpenGL ani DirectX. Nikomu nie życzę programować w WinApi, to chyba jeszcze gorsze niż XLib. :p Nie mniej jednak WinApi powinno działać.


edytowany 1x, ostatnio: elwis
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12164
3

Będą działać – w końcu używasz API systemu, które jest po części ”dziedziczone” z wersji na wersję. Stare funkcje pozostają, a nowe są dodawane. Ale to wcale nie oznacza, że nie będziesz mieć żadnych problemów.

Jeśli Twoja aplikacja ma wspierać wszystkie wersje Windows np. od NT wzwyż, to musisz korzystać z takich funkcji, które są zawarte w bibliotekach we wszystkich wspieranych wersjach systemu. Jeżeli na taki problem natrafisz to należy skorzystać ze starszego odpowiednika, a jeśli nie ma odpowiednika (bo stary system w ogóle nie posiadał danej funkcjonalności), to cóż… trzeba wykryć wersję systemu i udostępnić daną funkcjonalność tylko wtedy, gdy faktycznie jest dostępna.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 5x, ostatnio: flowCRANE
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:37
0
elwis napisał(a):

WinApi to masochizm i trudno sobie wyobrazić, że chciałbyś tego użyć. Co to za czary chcesz zrobić, że nie wystarczy np. SDL czy Allegro, skoro nie chcesz OpenGL ani DirectX.

Właśnie żadne czary. Muszę hurtowo bitmapy przelecieć dosłownie piksel po pikselu i na podstawie jakichś tam obliczeń zmienić jego kolor. OpenGL i DX uznałem za coś bardziej do grafiki 3d (nie słyszałem o ich funkcjach operujących na poziomie pojedynczych pikseli) a z kolei Allegro, SDL itp. i tak korzystają z winAPI i nie wiem, czy specjalnie tu pomogą. Bardziej zaciekawiła mnie inna sugestia kolegi z tego wątku, że być może natywne API NVidia czy ATI - przyznam, że tego w ogóle nie brałem pod uwagę, bo nie wiedziałem, że takie coś jest udostępniane.

Nikomu nie życzę programować w WinApi, to chyba jeszcze gorsze niż XLib. :p Nie mniej jednak WinApi powinno działać.

Dopiero będę próbował. Aż tak źle?

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12164
1
darekdarek napisał(a):

Muszę hurtowo bitmapy przelecieć dosłownie piksel po pikselu i na podstawie jakichś tam obliczeń zmienić jego kolor.

Takie rzeczy można robić bez WinAPI i wcale nie jest powiedziane, że będzie to wybitnie powolne.

Bardziej zaciekawiła mnie inna sugestia kolegi z tego wątku, że być może natywne API NVidia czy ATI - przyznam, że tego w ogóle nie brałem pod uwagę, bo nie wiedziałem, że takie coś jest udostępniane.

Do dyspozycji jest wiele różnych bibliotek, mających przyjazny interfejs i wysoką wydajność swoich rozwiązań. To jednak w dalszym ciągu nie powinno decydować o doborze języka i sposobu pisania kodu.

Dopiero będę próbował. Aż tak źle?

Pisanie kodu aplikacji strukturalnie i z wykorzystaniem funkcji z API systemowego nie jest ani łatwe, ani szybkie, ani też bezpieczne. Po to wymyślono różne biblioteki do UI, aby nie tracić czasu na mozolne rzeźbienie kodu i ślęczenie w dokumentacji Windowsa.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:1454
1

@darekdarek:
To do takich zastosowań powinno dać radę DirectX - na szybko gógle znalazły mi takie coś


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:37
0
furious programming napisał(a):
darekdarek napisał(a):

Muszę hurtowo bitmapy przelecieć dosłownie piksel po pikselu i na podstawie jakichś tam obliczeń zmienić jego kolor.

Takie rzeczy można robić bez WinAPI i wcale nie jest powiedziane, że będzie to wybitnie powolne.

W sumie... to to winAPI potrzebne mi tylko do wyświetlania widoku tych zmian w jakimś oknie. Po prostu (być może mylnie) odrzucając OpenGL czy DX sądziłem, że zostaje mi tylko winAPI.
Co innego do wydajnego hurtowego grzebania po pikselach w 2d mogłoby być sensowne (w C i pod WIN)?

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12164
0
darekdarek napisał(a):

W sumie... to to winAPI potrzebne mi tylko do wyświetlania widoku tych zmian w jakimś oknie.

Do tego też nie potrzebujesz WinAPI, chyba że pisanie kodu w czystym C jest sztywnym wymogiem. A jest?


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:37
1

Co do "C" - tak, to jest wymóg.
A co do winapi - no chwila, a jak utworzę windowsowe okno? Jak wyświetlę w nim cokolwiek, czy zaprogramuję podstawową jego obsługę bez korzystania z Api Windowsa?

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:11 dni
2
darekdarek napisał(a):
elwis napisał(a):

WinApi to masochizm i trudno sobie wyobrazić, że chciałbyś tego użyć. Co to za czary chcesz zrobić, że nie wystarczy np. SDL czy Allegro, skoro nie chcesz OpenGL ani DirectX.

Właśnie żadne czary. Muszę hurtowo bitmapy przelecieć dosłownie piksel po pikselu i na podstawie jakichś tam obliczeń zmienić jego kolor. OpenGL i DX uznałem za coś bardziej do grafiki 3d (nie słyszałem o ich funkcjach operujących na poziomie pojedynczych pikseli) a z kolei Allegro, SDL itp. i tak korzystają z winAPI i nie wiem, czy specjalnie tu pomogą. Bardziej zaciekawiła mnie inna sugestia kolegi z tego wątku, że być może natywne API NVidia czy ATI - przyznam, że tego w ogóle nie brałem pod uwagę, bo nie wiedziałem, że takie coś jest udostępniane.

To z tego wynika, że wcale nie musisz schodzić na niskopoziomowe API. Nie widzę przeszkód żeby zmodyfikować bitmapę w pamięci przed wyświetleniem. Możesz to również zrobić w SDL, a powodów jest kilka. Przede wszystkim SDL jest przenośne, zadziała również na Linuksie, Macu i czymkolwiek tylko będziesz chciał. Dodatkowo ma całkiem przyjemne API (tak, WinApi jest BARDZO ZŁE i toporne) i na dodatek wspiera wsparcie sprzętowe dla grafiki 2D, więc może się załapiesz (WinApi chyba nie ma). Poza tym w SDL z łatwością zaimpotujesz obraz w jakimś normalnym formacie (np. png). BTW. w DirectX też pewnie to możesz zrobić (choć nie wiem czy wspiera język C, możliwe że tylko C++, MS za bardzo nie lubi C), bo to też ma wsparcie dla grafiki 2D.

Nikomu nie życzę programować w WinApi, to chyba jeszcze gorsze niż XLib. :p Nie mniej jednak WinApi powinno działać.

Dopiero będę próbował. Aż tak źle?

http://zetcode.com/gui/winapi/gdi/ -- tu jest coś o graficznym API, GDI.

Popatrz na przypadkowy kod w sieci, szybko zobaczysz, tysiące funkcji i mało która ma mniej niż 5 parametrów. ;( Bardzo dużo haczyków, itd. Do tego jest bardzo niskopoziomowe, nie warto. SDL ma ładny obiektowy styl w którym da się ładnie i wydajnie programować, może kiedyś ci się przyda jak zechcesz kodować coś multimedialnego. To bardzo przydatna, przyjemna w użyciu biblioteka.


edytowany 8x, ostatnio: elwis
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12164
0
darekdarek napisał(a):

Co do "C" - tak, to jest wymóg.

W takim razie jesteś raczej skazany na rzeźbienie kodu strukturalnego. Chyba że możesz skorzystać z jakiejś gotowej biblioteki, która ułatwi stworzenie aplikacji okienkowej (zobacz).


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:31 minut
5

WinApi to masochizm i trudno sobie wyobrazić, że chciałbyś tego użyć.

Mocna przesada. WinAPI nie jest takie straszne jak je malują.

Powstaje jednak pytanie: czy ten program w ogóle ma coś wyświetlać? Bo jeśli tylko wczytywać pliki graficzne coś tam w nich manipulować i zapisać wynik, to to może być po prostu program konsolowy. Potrzebna jest tylko jakaś biblioteka do obsługi potrzebnego formatu graficznego.

elwis
W sumie to da się w WinApi programować, przyznaję. Jak trzeba było, tak robiłem, swojego czasu nawet kodowałem w assemblerze WinApi. Z drugiej strony WinApi to technologia przestarzała i należy zachęcać nowych żeby używali nowszych lepszych rozwiązań. Na prawdę trudno wyobrazić mi sobie dobre zastosowanie dla WinApi, którego nie można by zrobić w czym innym (może coś w tym jest, że od wielu lat jestem zatwardziałym linuksiarzem ;P). Jeśli przesadziłem to żeby podkreślić powagę sprawy, może rzeczywiście trochę przekoloryzowałem. :p
Azarien
WinAPI to nie jest „technologia przestarzała”, tylko to jest systemowe API pod Windows, z którego i tak wszystko korzysta. Wszystko „inne” jak Qt to po prostu wrapper na WinAPI.
elwis
Uważam że jedno drugiego nie wyklucza. :) Winapi raczej nie jest ucieleśnieniem nowoczesnego programowania. Zwłaszcza że pomysłem współczesnego programowania jest nie babrać się w nieprzenosnym kodzie jeśli nie trzeba.
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:1454
0

Ja powiedziałbym, że WinAPI z C to tak jakby używać asemblera - da się w taki sposób zrobić naprawdę bardzo wiele, ale używanie wywołań i struktur WinAPI jest po prostu bardzo żmudne.


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:37
0
Azarien napisał(a):

Powstaje jednak pytanie: czy ten program w ogóle ma coś wyświetlać?

Tak, oczywiście. Na bieżąco zmiany w bitmapie - a bitmapa w oknie windowsowym z podstawową obsługą (typu podstawowe menu Load/Run/Save/Exit etc.)

MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:1454
1

Radujże się. Znalazłem swój stary program z pracy dyplomowej który działa na bitmapach *.BMP przy użyciu WinAPI, i robi:

  • zmiana kontrastu
  • negatyw
  • zmiana na skalę szarości
  • zmiana jasności
  • progowanie
  • rozmywanie

chociaż jak patrzę na ów kod, to mam spore wątpliwości, czy takie coś godzi się ludziom pokazać...

EDIT:
No dobra @darekdarek, zrobimy tak - obacz czy to, co ów program robi jest mniej więcej tym, czego potrzebujesz, i dostaniesz kod.


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 2x, ostatnio: MasterBLB
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:37
0

poka poka ;)
tylko w całości, żebym nie zadawał miliona pytań, co jeszcze trzeba dokleić
no bo z kontekstu wynika, że innej wartości niż sentymentalna to chyba nie ma :)

i żeby nie było, to nie jest ani moja praca domowa ;) ani dokładnie to co będę próbował zrobić, ale chętnie bym przeanalizował w celu edukacyjnym

EDIT: tak - co do ogólnych ram, to to czego szukam
jako ogólne ramy rozumiem rzeczy tak podstawowe jak:

  • Windows;
  • C;
  • WinAPI;
  • Okno z menu;
  • Działania na bitmapie.

Różnice takie, że to docelowo będą całe animacje obrabiane "klatka po klatce" a operacje "piksel po pikselu" będą robione na podstawie wielu plików/warstw jednocześnie.
Taki jest zamysł.

BTW: Jak np. robisz negatyw czy szarość, to rzeczywiście jest to operacja piksel po pikselu (pętla w pętli) przez cały obrazek czy jakaś inna operacja (np. po prostu na palecie kolorów)?

edytowany 4x, ostatnio: darekdarek
MasterBLB
I jak, działa ten Graphicus u ciebie?
DA
Co ma nie działać.
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:1454
1

Zmiana na skalę szarości to o ile pamiętam jest zrobiona poprzez uśrednienie kanałów RGB. Ale jak dokładnie, to już sam sobie przeanalizuj.

O Swarogu przenajsłodszy, toć to jeszcze projekt dla Visual Studio 6.0...o.O


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:37
0

Spasiba

MasterBLB
Jak się przyda, to pyknij ptaszka pod łapką ^^
Aryman1983
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Pabianice
  • Postów:255
0

Ja tam schodziłem do czeluści WinApi jak robiłem na win ce, ale średnio bym tam wracał :-)

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12164
2
MasterBLB napisał(a):

Zmiana na skalę szarości to o ile pamiętam jest zrobiona poprzez uśrednienie kanałów RGB. Ale jak dokładnie, to już sam sobie przeanalizuj.

Innym sposobem jest obliczenie jasności piksela i użycie go jako odcienia szarości. Poniższego przelicznika używam w swoim projekcie:

Kopiuj
shade = (r * 0.299) + (g * 0.587) + (b * 0.114)

r = shade
g = shade
b = shade

Łatwizna. Mam jeszcze kilka innych algorytmów, np. do rozjaśniania/przyciemniania kolorów, więc w razie czego mogę podać przeliczniki. Jeden z nich (przyciemnianie) opisałem na blogu – tam jest wersja działająca dość efektywnie.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 4x, ostatnio: flowCRANE
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:1454
0

@furious programming: Hmmm to chyba mój będzie szybszy, tylko 3 dodawania i 1 dzielenie:

Kopiuj
z=(*(pBits+1)+*pBits+*(pBits+2))/3;//obliczenie wartości składowej skali szarości //pisownia zostawiona oryginalna, choć mi oczy krwawią...

"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12164
0

Być może i szybszy, ale Twój wzór generuje znacznie jaśniejszy odcień. Dla przykladu posłużę się kolorem 54,111,205 – jest to odcień niebieskiego, którego używam w swoich projektach. Najpierw Twój sposób:

Kopiuj
(54 + 111 + 205) / 3 = 123.333333

a teraz ten podany przeze mnie:

Kopiuj
(54 * 0.299) + (111 * 0.587) + (205 * 0.114) = 104.67300

Po obcięciu części dziesiętnej mamy wartość 123 kontra 104 – to duża różnica. Sposób którego sam używam jest dość popularny, a wzór można znaleźć m.in. w tym artykule – Grayscale: Luma coding in video systems.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 4x, ostatnio: flowCRANE
Zobacz pozostałe 17 komentarzy
MasterBLB
a czekej, założyłeś jako niezalogowany, to nie dasz rady pewnie :/ co najwyżej możesz moda poprosić o przysługę pyknięcia go za Ciebie.
DA
chyba nawet go nie widzę, widzę kciuki przy każdym poście w wątku, ale ten przy projekcie klikałem, więc chyba nie o tym mówisz
MasterBLB
Tu masz przykład jak to wygląda -https://4programmers.net/Forum/C_i_C++/317629-potegowanie_liczby_wprowadzonej_z_klawiatury?p=1536693#id1536693
DA
no to tylko się potwierdziło, że nie mogę tego kliknąć bo zakładałem wątek jako guest (nie widzę tego ptaszka)
MasterBLB
otóż właśnie, i dlatego co najwyżej moderator może Cię wyręczyć, o ile to możliwe. @furious programming, @kq, @Marooned, ktoś coś?
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:31 minut
1

Jeśli wydajność jest istotna (skoro to mają być bitmapy „hurtowo”) to obróbkę grafiki bym zrobił w OpenGL-u na GPU. Będzie mega szybko.
Ale to już zadanie z gwiazdką, a nawet kilkoma.

Visual Code
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:107
1

Nie czytałem całego tematu, ale tak bardziej w odniesieniu do odpowiedzi @furious programming: i @MasterBLB

Jeżeli chcemy z koloru zdefiniowanego przez trzy składowe RGB do skali szarości, to od razu widać, że reprezentacja RGB nam w tym zadaniu nie pomoże, znacznie lepszym wyborem byłoby przedstawienie koloru w przestrzeni kolorów YCbCr.

Y to składowa luminacji, jest ona wielkością natężenia oświetlenia, Cb, Cr to dwie składowe chrominacji odpowiadające za kolor i natężenie koloru.

Jak widzimy Y będzie tą wartością, którą będzie nas interesować, warto wspomnieć, żę nie ma jednej dokładnej definicji przejścia z przestrzeni barw RGB do YCbCr, ale różnice między nimi są niewielki i często dla przyśpieszenia wykonywania obliczeń, wybieramy uproszczone wersje.

Przykładowo w zaleceniu ITU-R BT.709 zawarto: (link)
E'Y = 0.7154 E'G + 0.0721 E'B + 0.2125 E'R
E'PB = – 0.386 E'G + 0.500 E'B – 0.115 E'R
E'PR = – 0.454 E'G – 0.046 E'B + 0.500 E'R

Ten wzór może być dobrym kandydatem na uzyskanie prawidłowej luminacji.
Y = 0.2125 R + 0.7154 G + 0.0721 B

Jednak dla optymalizacji obliczeń wprowadza się pewne zaokrąglenia, lub próbuje się przybliżać wynik w inny sposób.
Przykłady znalezione w internecie:

Y = 0.33 R + 0.5 G + 0.16 B
Y = (R+R+B+G+G+G)/6
Y = (R+R+R+B+G+G+G+G)>>3

Wyniki dla (54, 111, 205)
screenshot-20181117152154.png

edytowany 1x, ostatnio: Visual Code
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)