Edytor grafiki wektorowej na PaintBoxie

Odpowiedz Nowy wątek
2018-12-19 20:47
2

Zacząłem sobie ostatnio popisywać w Lazarusie taki projekt docelowo na Malinę. W zamierzeniu ma to być tworzenie grafiki wektorowej z której tworzę ciąg bitów na maszynę CNC. Po prostu Malina będzie podłączona do frezarki CNC. Na Malinie rysuję i przyciskiem np "Teraz ładnie mi to wyfrezuj w materiale" puszczam po usb na serwosilniki. Piszę tutaj o tym dlatego, że pod tym linkiem: www.youtube.com/watch?v=L3BuCcEEawA wystawiłem dla zainteresowanych do pobrania taki prosty przykład wektorówki. Nie wiem czy da się z tego czegoś nauczyć (oprócz jak nie pisać w ten sposób ;), ale można tam ogarnąć jak rozwiąząć tworzenie tego rodzaju grafik.

edytowany 3x, ostatnio: furious programming, 2018-12-21 17:56

Pozostało 580 znaków

2018-12-19 20:56
1

Znam ten programik, nawet mam w nim swój znikomy udział. ;)

Ogólnie chodzi o to, aby najpierw sobie bardzo dobrze rozplanować funkcjonalność oraz wymagania co do takiego programu, zanim zacznie się cokolwiek pisać. Tego typu rozwiązania idealnie nadają się do stworzenia osobnego komponentu, opakowującego całą funkcjonalność łącznie z wizualnym edytorem. Dzięki temu wystarczy kontrolkę położyć na formularzu i wyklikać co nieco w oknie inspektora obiektów.

Nie jest proste zadanie, ale warto trochę dłużej posiedzieć, aby mieć rozwiązanie łatwe i wygodne w użyciu.


Pozostało 580 znaków

2018-12-19 21:11
0

No dokładnie, masz udział :) Jak zobaczyłem Twoje rozwiązanie dot. zaznaczania obszaru, pomyślałem, kurde muszę coś na szybko ale inną drogą.. wektorówkę zrobiłem już kiedyś do frezarki CNC ale na Windows (starsze moje filmiki na kanale) ale to zaznaczanie mi się naprawdę spodobało.

Pozostało 580 znaków

2018-12-19 21:13
0

@machinebyte4: podoba mi się Twoja postawa. Nie tylko zadajesz pytania, ale też się dzielisz, jak masz coś ciekawego do pokazania. Fajne to jest :) Dałem łapkę w górę, chociaż tyle mogę dla Ciebie zrobić ;)


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

2018-12-19 21:30
0

W końcu po to mamy forum, aby dzielić się wiedzą i kodem.

Moje rozwiązanie – to narzędzie do zaznaczania – pierwotnie stanowiło PoC-a dotyczącego zaznaczania i przesuwania prostokątnych fragmentów obrazu. Wątek na ten temat dawno temu założył bodaj @hipekk, ale teraz nie pamietam. Nie jest to rozwiązanie praktyczne, dlatego że narzędzie jest cały czas aktywne – trzeba sobie w swoim projekcie dodać kod, za pomocą którego najpierw włączy się to narzędzie, następnie dany fragment się zaznaczy i dopiero wtedy będzie można ramkę rozciągać i przesuwać, co zaowocuje rozciągnięciem lub przesunięciem zaznaczonego kawałka obrazu. Natomiast kotwice nie powinny być widoczne podczas przeciągania i rozciągania, bo zasłaniają zawartość (to akurat pikuś – jeden dodatkowy warunek w zdarzeniu OnPaint).

Wszystko zależy od tego, jakie są wymagania do zastosowania tego kodu. Aby móc zrobić edytor w stylu Painta, trzeba nie tylko poszerzyć funkcjonalność tego narzędzia, ale też wyposażyć edytor (np. jako komponent) w dodatkowe tylne bufory. Nie byłoby z tym jakoś szczególnie dużo pracy, ale trzeba by trochę kodu naklepać.

W podobny sposób można się zabrać za edytor grafiki wektorowej, ale tu będzie jeszcze więcej pisania, bo funkcjonalność większa – więcej typów obiektów, kolor ich obramowania oraz ew. wypełnienia, łączenie wielu w metaobiekty itd. Całkiem fajny projekcik do zrobienia. ;)


edytowany 4x, ostatnio: furious programming, 2018-12-19 21:40

Pozostało 580 znaków

2018-12-21 16:24
0

@machinebyte4: zastanawiałeś się może nad napisaniem takiego etytorka w postaci uniwersalnej, np. jako kontrolki? Tyle że już bez pośpiechu, zaczynając od konkretnego zaprojektowania, ładnego podziału na klasy, dodając różne przydatne funkcje (np. zoom czy linijki).

Taka kontrolka mogłaby się przydać również innym użytkownikom. Bo póki co to w kodzie tego przykładowego projektu jest mały bałagan, a całość działa w oparciu o kontrolkę typu TPaintBox, więc jest to mało uniwersalne rozwiązanie.


Pozostało 580 znaków

2018-12-21 19:55
1

No jest tam "trochę" bajzlu. To czym piszesz jest jak najbardziej do ogarnięcia tylko, że siedzę nad projektem "ramie robotyczne" , o którym już publikowałem . W skrócie, Malina steruje kilkoma Arduino Uno. Każde Uno steruje serwosilnikiem, zbierając info o pozycji enkodera, generując sygnały kroku, kierunku dla silników, itp. Z Malina komunikuje się po protokole i2c i nie tylko. Dużo by pisać. Część po stronie Uno piszę w Bascomie, na Malinie w Lazarusie. Fizycznie wszystko mam rozbebeszone na stole tzw. operacyjnym ;) Efekt działania jest zadowalający do momentu kiedy coś mi sie nagle nie zesypie podczas n-tego testu. W tym projekcie niestety poza problemami czysto programowymi (te są nawet przyjemne) są jeszcze problemy związana ze sprzętem, z protokołami, zakłóceniami przesyłu danych. Pochłania to dużo czasu, każdy krok, właściwie kroczek do przodu to czasami kilka dni szukania w obwodzie prądowym, Bascomie, Lazarusie. Słowem ściana płaczu :)

Pozostało 580 znaków

2018-12-21 19:58
0

Hmm, brzmi całkiem ciekawie – będziesz publikował później źródła i pokażesz całość jak skończysz?


Pozostało 580 znaków

2018-12-21 20:02
0

Możliwe, że tak. Jeśli się komukolwiek do czegokolwiek przydadzą. Fragmenty projektu w Bascomie są ściśle powiązane ze fragmentami W Lazarusie. Jedne bez drugich są tylko kupą kodu z którego nic nie wynika. A wszystko to musi pracować w ściśle określonej architekturze sprzętowej.

Ok, w takim razie powodzenia i w razie czego będę czekał na niusy. ;) - furious programming 2018-12-21 22:18

Pozostało 580 znaków

2018-12-21 22:05
0

A to ramię robisz w jakimś konkretnym celu - jako element większej całości nad którą pracujesz albo w ramach zlecenia od klienta, czy po prostu dla własnej satysfakcji albo jako sposób uczenia się?


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0