Inlägg

Inlägg som AmatörArduino har skrivit i forumet
Av AmatörArduino

Aktivera dubbelbuffering för tabpage i C# (skoluppgift)

Hej!

Har en inlämningsuppgift (programmering 1) och vet inte riktigt vad jag ska göra. Har testat och experimenterat runt lite med att bland annat flytta runt raderna, men inte fått det resultatet jag vill ha. Har även sökt runt lite andra forum utan att bli klokare eftersom det verkar väldigt rörigt.

Inlämningsuppgiften går ut på att skapa ett "skjutspel" med en måltavla samt ett sikte. Därefter ska det gå att skjuta på måltavlan och räkna poäng med mera, men det kommer jag till så småningom.

Det som jag har problem med är att få bort flimmret. Siktet ska röra sig efter muspekaren och då "målas" ju måltavlan och siktet upp igen från början, vilket skapar väldigt mycket flimmer, något som jag vill få bort. Tidigare när måltavlan och siktet ritats upp i form1 så har jag löst detta med raden "this.DoubleBuffered = true;". Dock verkar detta inte funka när måltavlan och siktet ritas upp på en tabpage. Vet inte riktigt hur jag ska göra.

Bifogar all min kod här nedan (klassen för måltavla och sikte samt "form-koden"). Får ursäkta den röriga strukturen som uppstått när jag testat och experimenterat runt.

Tacksam för all form av hjälp!

Form1.cs:

public partial class Form1 : Form { Måltavla mål; Sikte sikte; public Form1() { InitializeComponent(); //Skapa ett sikt-objekt med namnet sikte och ge det positionen 0, 0 och storleken 20 sikte = new Sikte(200, 200, 20); //Aktivera dubbelbuffering this.DoubleBuffered = true; } private void Form1_Load(object sender, EventArgs e) { //Sätt höjd och bredd till skärmstorleksvärden int höjd = Screen.PrimaryScreen.Bounds.Height; int bredd = Screen.PrimaryScreen.Bounds.Width; //Sätt storleken på form1 till skärmstorleken this.Size = new Size(bredd, höjd); //Placera måltavlan i mitten av skärmen mål = new Måltavla(ClientSize.Width / 2, ClientSize.Height / 2, 100); //Fyll tabcontrol i form1 this.tabControl1.Dock = DockStyle.Fill; //Uppdatera kontrollen med det senaste resultatet. tabPage1.Paint += tabPage1_Paint; //Maximera fönstret this.WindowState = FormWindowState.Maximized; } private void tabPage1_Paint(object sender, PaintEventArgs e) { mål.Rita(e.Graphics); sikte.Rita(e.Graphics); } private void tabPage1_MouseMove(object sender, MouseEventArgs e) { sikte.X = e.X; sikte.Y = e.Y; tabPage1.Invalidate(); } }

Sikte.cs:

internal class Sikte { //Medlemsdata private int x = 0; private int y = 0; private int radie = 0; //Konstruktor public Sikte(int x, int y, int r) { this.X = x; this.Y = y; this.Radie = r; } //Egenskaper public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } } public int Radie { get { return radie; } set { if (value > 0) { radie = value; } else { radie = -value; } } } public Point Position { get { return new Point(x, y); } set { x = value.X; y = value.Y; } } public void Flytta(int dx, int dy) { x = x + dx; y = y + dy; } //Metoder public void Rita(Graphics g) { int r = radie; g.DrawEllipse(Pens.Green, x - r, y - r, r * 2, r * 2); r = (int)(radie * 0.6); g.DrawEllipse(Pens.Green, x - r, y - r, r * 2, r * 2); r = (int)(radie * 0.4); g.DrawLine(Pens.Green, x - (3 * r), y, x - r, y); g.DrawLine(Pens.Green, x + (3 * r), y, x + r, y); g.DrawLine(Pens.Green, x, y - (3 * r), x, y - r); g.DrawLine(Pens.Green, x, y + (3 * r), x, y + r); r = (int)(radie * 0.1); g.DrawLine(Pens.Purple, x - r, y, x + r, y); g.DrawLine(Pens.Purple, x, y - r, x, y + r); } }

Måltavla.cs:

internal class Måltavla { //Medlemsdata private int x = 0; private int y = 0; private int radie = 0; //Konstruktor public Måltavla(int x, int y, int r) { this.X = x; this.Y = y; this.Radie = r; } //Egenskaper public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } } public int Radie { get { return radie; } set { if (value > 0) { radie = value; } else { radie = -value; } } } public Point Position { get { return new Point(x, y); } set { x = value.X; y = value.Y; } } public void Flytta(int dx, int dy) { x = x + dx; y = y + dy; } //Metoder public void Rita(Graphics g) { int r = radie; g.DrawEllipse(Pens.Black, x - r, y - r, r * 2, r * 2); g.FillEllipse(Brushes.Black, x - r, y - r, r * 2, r * 2); r = (int)(radie * 0.833); g.FillEllipse(Brushes.White, x - r, y - r, r * 2, r * 2); r = (int)(radie * 0.666); g.FillEllipse(Brushes.Black, x - r, y - r, r * 2, r * 2); r = (int)(radie * 0.499); g.FillEllipse(Brushes.White, x - r, y - r, r * 2, r * 2); r = (int)(radie * 0.333); g.FillEllipse(Brushes.Black, x - r, y - r, r * 2, r * 2); r = (int)(radie * 0.166); g.FillEllipse(Brushes.Red, x - r, y - r, r * 2, r * 2); } }

Av AmatörArduino

Köar på båda korten om ingen hämtar samt om du kan tänka dig skicka korten med posten.

Av AmatörArduino
Skrivet av MickeBoy:

Är det inte så att den ritas på det objekt vars OnPaint-metod som du har ändrat?
Jag gissar att du ska flytta din kod till det objekt som du vill rita på.

Det hade varit lättare att hjälpa till om du delade med dig av hela din kod.

Du kan använda taggen [code] (med avslutande tagg också) för att markera kod i forumet.

kod här

Lyckades faktiskt lösa det idag under med lite hjälp från en kompis. Precis som du säger så behövde jag typ bara flytta koden till det objekt som jag vill rita på samt ändra någon enstaka rad här och där. Tack för hjälpen!

Av AmatörArduino

Rita rektangel på en tabpage i C# (skoluppgift)

Hej!

Har en skoluppgift (programmering 1) och vet inte riktigt hur jag ska ta mig vidare. Fortfarande rätt ny inom det här så ber om ursäkt om jag inte använder rätt begrepp m.m.

Om jag exempelvis vill rita en rektangel med positionen (100, 100) och storleken (100 x 100 pixlar) så har jag gjort så här:

protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
SolidBrush brush = new SolidBrush(Color.Black);
g.FillRectangle(brush, 100, 100, 100, 100);
}

Dock ritas kvadraten på Form1 och eftersom jag i skoluppgiften har använt mig utav en Tabcontrol med några Tabpages, så syns inte den svarta kvadraten som ritas eftersom Tabcontrol ligger ovanför.

Vet inte hur jag ska lösa det, vill att kvadraten ska ritas på en specifik Tabpage (i det här fallet tabPage1).

Tacksam för all form av hjälp!

Av AmatörArduino
Skrivet av Scarabeo:

https://www.proshop.se/Baerbar-dator/ASUS-Zephyrus-GA503QM-HQ...

Tycker denna ser väldigt fin ut för dina behov. Ryzen 9 5900HS, 16 GB RAM, RTX 3060 och väger 1,9 kg.

Fann denna också med 32 GB RAM, dock sämre GPU. Väger endast 1,7 kg.

https://www.mediamarkt.se/sv/product/_asus-rog-zephyrus-g14-g...

De datorerna som du länkar har väl dedikerade grafikkort. Skulle jag kunna klara mig på en laptop med Intel Iris Xe graphics eller Radeon Graphics?

Av AmatörArduino
Skrivet av Sions:

Apples M1 serie skall vara riktigt bra om man tror recensionerna, även 8gb modellerna.
Dock använder de inte premiere.
Så möjligen behöver du justera programvaran om du väljer äpplet.

Tack för svar,

Tror det mer lutar åt Windowsdatorerna. Frågan är dock vilken grafikkrets laptopen borde ha för att nå upp till mina behov.

Av AmatörArduino

Bärbar dator till redigering. Vilken grafikkrets?

Hej,

Är i behov av en ny laptop för foto- och videoredigering. Har kikat runt och tänker mig att 20 000 kronorsklassen och neråt är lagom (kommer primärt att använda min stationära dator, men laptop på t.ex. resor). Det är bra om laptopen väger runt 2 kg och neråt beroende på skärmstorlek och gärna tunn så att den lätt går ner i väskan.

Kommer att använda mig utav program så som Photoshop, Premiere, Lightroom och Resolve. Vill gärna att laptopen ska klara redigering i upplösningarna 1080p och uppåt.

Jag har kollat på laptops hos Inet och ser att det finns olika laptop-grafikkretsar så som Intel Iris Xe graphics, Radeon Graphics samt dedikerat grafikkort. Vet dock inte om en laptop med Intel Iris Xe graphics eller Radeon Graphics räcker för mina behov. Borde jag istället köpa en laptop med ett dedikerat grafikkort?

Utöver detta vill jag även fråga om det finns något annat viktigt (övriga datorkomponenter, prioritering o.s.v.) att tänka på sett till mina behov.

Av AmatörArduino
Skrivet av PatchedPlayer:

Tjena!
Jag har haft en Fanatec DD1 PS4 i snart två år nu och jag är extremt nöjd med den. Hittils har jag inte haft några problem med pins eller liknande och då byter jag också ofta mellan två olika rattar. Jag har svårt att se hur pinsen ska bli skadade så länge du gör rätt när du hanterar quick-releasen men jag har inte super bra koll på det här problemet. Quick-releasen fungerar otroligt snabbt och bra förresten, i alla fall QR1 modellen jag har på båda rattarna.

Jag valde Fanatec främst på grund av deras eko-system och PS4-kompatibilitet. Eftersom alla komponenter i min rig är från Fanatec så kan jag köra allt på en USB-kabel, väldigt praktiskt om man byter ofta mellan PS4 och dator som jag gör. Om du ändå tänker köpa pedaler och liknande ifrån andra tillverkare så försvinner den här fördelen så klart.

Om du har några frågor så är det bara att köra på! 😊

Tack för ditt svar,
Enligt specifikationerna har Fanatec DD1 ett maximalt vridmoment/motstånd på 20 Nm vilket är mer än tillräckligt för mig. Genom mjukvara kan man ställa in hur mycket motstånd man vill ha. Ganska logiskt att fästet kommer få mer stryk om man drar upp motståndet. Det tillsammans med icke korrekt montering kan vara en teoretisk anledning till avbrutna pins. Hur många procent har du ställt in den på? Har du kört mycket med din Fanatec?

Av AmatörArduino

Fanatec eller Simucube

Hej,
Tänker skaffa mig en racingsimulator rig under sommaren. Vill gärna ha en directdrive "wheel base" och efter lite research så har jag kommit fram till att Fanatec Podium DD1 och Simucube 2 PRO nog passar mig bäst. Står dock och väger mellan den ena och den andra. Någon som har kört/kör på en Fanatec eller Simucube? Vad är eran erfarenhet av dessa?

Har läst att ganska många Fanatec-användare har haft problemet med brutna pins på rattarna (verkar vara ett känt problem hos Fanatec). Fanatecs lösning för "dataöverföring" mellan "wheel base" och ratten är ju pin-connectorn. Om några av "pinnarna" skulle gå av under 3 åriga garantitiden så borde det vara ganska enkelt att lösa efter kontakt med kundservice m.m. Har hört att deras kundservice är duktiga på att hantera problemet. Tror dock inte man behöver kontakta kundservice om en pinne gick av på själva ratten eftersom jag hört att det går att reparera själv (antingen byta ut en pin eller byta ut hela pin-connectorn). Inga större bekymmer på den fronten.

Problemet ligger istället i att den avbrutna delen fortfarande kan sitta kvar i "wheel basen". Sticker det ut en bit kan man säkert dra ut den med en pincett eller liknande. Vet dock inte vad man kan göra om den avbrutna delen sitter lite längre in och garantitiden löpt ut. Kan man ta ut den genom att skruva isär hela "wheel basen" eller är det kört?

Här vinner väl Simucube eftersom dataöverföringen sker trådlöst? Tycker också att fästanordningen är bättre eftersom det är enklare att byta mellan olika rattar. Den enda nackdelen med att välja Simucube är väl att man inte har samma "enkelhet" som man får när man köper Fanatec. Till exempel måste pedaler, växelspak och modifierad ratt (icke trådlös) kopplas in var för sig i datorn. Hos Fanatec kan man koppla in tillbehören direkt i "wheel basen". En annan sak som talar emot Simucuben är väl utseendet. Fanatec har enligt mig ett gediget och fräckare utseende med bland annat kolfiberfinish.

Om Fanatec inte skulle ha problemet med avbrutna pins så skulle det enkelt bli en Fanatec. Är det någon som äger en Fanatec och råkat ut för avbrutna pins och isåfall, hur åtgärdade ni det? Borde jag välja Fanatec eller Simucube?

Av AmatörArduino
Skrivet av oatp1b1:

Köp en förstärkare från en renommerad tillverkare så klarar den 4-8 ohm utan några som helst problem.

Så jag kan i princip köpa en förstärkare från en känd tillverkare och förvänta mig att den klarar mellan 4-8 ohm. Finns en hel del att läsa på känner jag nu, men behöver jag seriekoppla högtalarna? Ökar det impedansen till 8 ohm då?

Av AmatörArduino
Skrivet av oatp1b1:

Krävs inte mycket för att driva ett par högtalare till bra volymer. Du skriver inte vad det är för högtalare, men om man tar höjd för att få lite headroom och att dina högtalare inte har en besvärlig impedanskurva så kommer det troligtvis räcka med en förstärkare på 30-40 watt.
Du kan i princip inte köpa en för kraftfull förstärkare, men har du en för underdimensionerad kan du ha sönder dina högtalare om du har otur.

Tack för svar!
Vet ärligt talat inte vad det är för högtalare (märke eller modell). Står tyvärr inte på högtalarna. Har en till fråga som nu gäller impedansen. 4 ohm står det på högtalarna och vad händer till exempel om jag kopplar in en förstärkare med en output på 8 ohm? Kan jag seriekoppla högtalarna för att få 8 ohm så att det passar?

Av AmatörArduino

Hur många watt bör jag köra på?

Har två högtalare som jag hittade i förrådet (vet dock inte varför de ligger där). Högtalare där man behöver en förstärkare till. Min fråga blir då hur många watt det krävs för driva högtalarna så stabilt som möjligt?

Har aldrig kopplat in såna högtalare förut så vet inte om man kan riskera att bränna högtalarna genom att ha för mycket.

På högtalarna står det att det är "MAX 100 watt system" och impedansen är 4 ohm. Hur många watt bör jag köra på för att inte riskera att bränna högtalarna?

En till fråga när jag ändå är inne på ämnet. Kan jag köpa en förstärkare som är överdimensionerad? Riskerar jag att bränna högtalarna då eller går det att skruva ner med ett reglage?

Av AmatörArduino

@carlen: Jag vet iallafall att det här är rätt men jag vill att detta script ska repetera 100 gånger automatisk igen och igen.
F12::
Loop 20
{
Mouseclick, left
sleep 35000
}
Send {alt down}{F4}{alt up}
return

Av AmatörArduino

@carlen: Kan jag ta bort f11 och bara köra return? Och om jag vill att hela scriptet ska köra av sig själv om och om igen 100 gånger. Alltså musklick 20 gånger alt+f4 en gång. Hur går jag då till väga?

Av AmatörArduino

@Pamudas: Testade men funkade tyvärr inte.😥

Av AmatörArduino

@carlen: Men vart i denna kod ska jag sätta in alt+f4? 😀

Av AmatörArduino

Hjälp med autohotscript

Har under lång tid velat testa om det går att programmera ett tangentbord samt mus för till exempel. Det jag helt enkelt vill göra är att till exempel trycker på f12 så ska scriptet aktiveras och musen ska klicka en gång men efter tjugo klick så vill jag att den trycka en gång så att den ska stänga ner websidan, då används alt+f4. Och sen ska det börjar om igen, men musen ska även vila lite efter ett klick i ungefär 35 sekunder. Har kommit en bit på vägen men alt+f4 har jag inte fått ihop hur går jag tillväga? Än vänder programmet Autohotscript för denna sak.

Det jag gjort än så länge:
F12::
loop, 1000
{
MouseClick, left,
sleep 35000
}
return

Av AmatörArduino

@Knightogus: Men loop betyder hur många gånger detta scriptet ska repeteras innan det stängs av.

Av AmatörArduino

Hjälp med programering [AUtohotscript]

Har under lång tid velat testa om det går att programmera ett tangentbord samt mus för till exempel. Det jag helt enkelt vill göra är att till exempel trycker på f12 så ska scriptet aktiveras och musen ska klicka en gång men efter tjugo klick så vill jag att den trycka en gång så att den ska stänga ner websidan, då används alt+f4. Och sen ska det börjar om igen, men musen ska även vila lite efter ett klick i ungefär 35 sekunder. Har kommit en bit på vägen men alt+f4 har jag inte fått ihop hur går jag tillväga? Än vänder programmet Autohotscript för denna sak.

Det jag gjort än så länge:
F12::
loop, 1000
{
MouseClick, left,
sleep 35000
}
return

Av AmatörArduino

Har själv byggt en egen men om du ska välja glas så ska du välja riktigt spionglas på grund av att "spegeleffekten" blir bättre och att film kan göra att du får bubblor och om det är någon dammpartikel så kommer det bli en upphöjning på filmen. Men om du vill förhålla dig till en bra spegel men inte vill gå över budgeten så funkar väl film bra. Med tanke på att du vill ha den i badrummet så skulle jag säga att det bara är en fördel med tanke på att skärmen ger ut värme som gör att spegeln inte immar som vanliga speglar gör. Men om du tätar den så kommer skärmen att bli överhettad men om du inte tätar den så kan det bli vattenskador vilken kan vara en nackdel. Jag kanske inte är snickare nu men du kan bygga in den i väggen och borrar några hål på ramen och sedan drar rör till ventilationsfläkten i badrummet. Och sen tätar du alla utrymmen som du satte i spegel. Då kan den inte bli överhettad eller få fuktskador. Det är min tanke. Själv satte jag upp min mellan vardagsrummet och köket.