Új hozzászólás Aktív témák
-
Zalanius
tag
Szia,
nagyjából látom, mit akarsz kihozni abból a kódból, de az Image property kasztolásakor szerintem gond lesz a referenciával (és/vagy a picturebox viselkedésének is utána kellene nézni a pontos magyarázathoz). Azonkívül ha a gombkattintásra akarod húzni a vonalat, akkor ne a pictureBox1_Click metódusba írd, hanem a button1_Click-be. Első körben:
Bitmap temp = (Bitmap)pictureBox1.Image;
Szakasz2(temp, x1, y1, x2, y2, szín);
pictureBox1.Image = temp;Nyilván lehetne még polírozni, de ebből látszik a lényeg. A Refresh(); hívás meg nem kell.
[ Szerkesztve ]
--= Zalán =--
-
Zalanius
tag
Egy kis pozícionálási hiba van abban a kódban, így ebben a formában nem is fordulhat le. Ez a két sor van rossz helyen:
int x1 = int.Parse(textBox1.Text);
int y1 = int.Parse(textBox2.Text);Egyből az egy fordítási hiba, hogy nem adható két ilyen mezőnek kezdőérték másik mezőből. De ebben most nem is kell elmerülni, mert a célod a futás közben beírt értékek kiolvasása, tehát a két sor helye a button1_click metódusban van, még a Szakasz2 hívás előtt. A Parse metódusról tudni kell, hogy feltételezi az input megfelelő formátumát, tehát két töküres textbox esetén kivételre futsz vele. Szöveges tartalom esetén szintén. Hasznos olvasnivaló lehet ezért: Int32.TryParse.
--= Zalán =--
-
Zalanius
tag
Szia,
nem pontosan értem a részleteket, de az biztos, hogy a bitmappel kapcsolatban nincs művelet a függvényedben, talán csak ennyi hiányzik. Az a kód egy körnegyedet rajzolna nagyjából. A "hullám" alapján valami hasonlóra gondoltam, aztán ha más a változók értelme, mint a tippem, akkor azt is igazítani kell:public void Hullam(Bitmap bmp, int x0, int y0, int r, double alfa1, double alfa2, Color szín)
{
double x = 0, y = 0;
while (x*alfa1 < bmp.Width - x0 && y < y0)
{
y = alfa2 * Math.Sin(x);
bmp.SetPixel((int)(x0 + x *alfa1), (int)(y0 - y), szín);
x += 0.01;
}
this.Refresh();
}--= Zalán =--
-
Zalanius
tag
válasz joysefke #8004 üzenetére
Pedig ott a flösch környékén lesz a hiba. Próbáld ki így:
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream ds = new GZipStream(ms, CompressionMode.Compress))
{
using (StreamWriter sw = new StreamWriter(ds))
{
int i = -1;
try
{
for (i = 0; i < n; ++i) sw.WriteLine(numbers[i]);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
Console.WriteLine("Current item: {0} \r\nhit key!", i);
Console.ReadKey();
}
/* sw.Flush();
ds.Flush();
ms.Flush();*/
}
}
compressedData = ms.ToArray();
}--= Zalán =--
-
Zalanius
tag
Még egy variáció alább (.net 4.5+). A fenti kettő amúgy jobb válasz, de eljátszottam kicsit a feladattal async eszközökkel, hátha érdekes lehet. Nem a legszebb a "novekvo" ilyen használata, de ennél a példánál belefér az ilyesmi is, nincsenek más konkurrens részek, amikre még tekintettel kellene lenni. A ReadKey hallgatózás hátránya, hogy ha el is értük a maxot, egy ESC akkor is kell, mielőtt a "Kész..." megjelenhet.
static void Main(string[] args)
{
Console.WriteLine("Befejezés: ESC. Irányváltás: SPACE.");
CancellationTokenSource cts = new CancellationTokenSource();
const int MAX = 1000;
int x = 0;
bool novekvo = true;
Task t1 = Task.Factory.StartNew(async () =>
{
while (!cts.Token.IsCancellationRequested && x < MAX)
{
Console.Write(novekvo ? ++x : --x);
Console.Write(" ");
await Task.Delay(50);
}
}, cts.Token);
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
while (keyInfo.Key != ConsoleKey.Escape)
{
if (keyInfo.Key == ConsoleKey.Spacebar)
{
novekvo = !novekvo;
}
keyInfo = Console.ReadKey(true);
}
cts.Cancel();
Console.WriteLine("Kész. A kilépéshez nyomj meg egy gombot.");
Console.ReadKey();
}--= Zalán =--
-
Zalanius
tag
válasz BTminishop #8017 üzenetére
Ehhez előbb a Click eventet elfogni képes elemre van szükség. Többféleképpen is neki lehet vágni, ha mindenképpen szeretnél egy mátrixot, akkor azt fel lehet építeni pictureBox vagy hasonló elemekből is, és akkor a tömb minden eleméhez hozzárendelhető egy metódus rajzolási célból.
De itt akár mellőzhetők is a tömbök, ha "canvas" céljából egy pictureBoxot vagy hasonlót alkalmazunk, és a kattintás koordinátáiból állapítod meg utána, hogy a sakktábla melyik mezőjére kell rajzolni. Tegyük fel, hogy adott egy 400*400 pixeles pictureBox (pb), meg valahol a fájlrendszerben egy kép tesztelésre (queen_41.png), ekkor vázlatosan:
const int WIDTH = 50;
const int SIZE = 8;
const int IMGSIZE = 41;
const string IMGPATH = @"T:\queen_41.png";
public Form1()
{
InitializeComponent();
pb.MouseClick += Pb_MouseClick;
}
private void button1_Click(object sender, EventArgs e)
{
Graphics g = pb.CreateGraphics();
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
g.FillRectangle((i + j) % 2 == 0 ? Brushes.White : Brushes.Black, i * WIDTH, j * WIDTH, WIDTH, WIDTH);
}
}
}
private void Pb_MouseClick(object sender, MouseEventArgs e)
{
float x, y;
x = e.X - (e.X % WIDTH) + (WIDTH - IMGSIZE) / 2;
y = e.Y - (e.Y % WIDTH) + (WIDTH - IMGSIZE) / 2;
Graphics g = pb.CreateGraphics();
g.DrawImage(Image.FromFile(IMGPATH), x, y);
}[ Szerkesztve ]
--= Zalán =--
-
Zalanius
tag
válasz martonx #8148 üzenetére
Ezt egy kicsit megfordítanám. Jómagam, az iparos, próbálgattam a core-t (1.0, 1.1, 2.0). Felsőbb nyomásra persze. Egy igazi senior meg utánaolvasás után és elpocsékolt idő nélkül is tudott volna meggyőzően érvelni, hogy emberek, ez még nem "production ready".
--= Zalán =--
-
Zalanius
tag
válasz martonx #8157 üzenetére
Megítélés kérdése, mint ahogy a lazy vagy a transactionscope is meg az ORA provider, ami meglesz (?) az idén (nem MS a hunyó nyilván) stb. Végül is az ember összedobhat inkább egy viewt vagy írhat egy tárolt eljárást, már ha megteheti - de néha azért elgondolom, hogy talán futhatnak olyan projektek is, ahol ez nem opció, és a DBadmin a fejét vakarja a codefirst világban szocializált népektől. Szóval szép lassan sikerül majd felérni az EF6 mellé, de addig csak az újdonság élményét kaptuk és az MS becsületére legyen mondva, hogy közben (bevallottan) sok bugfixet is. Nem mindig akart az a dbcontext scaffold sem jól futni...
És még egyszer: mindezt a csákányos dev szemével, aki úgymond ráér és szeret próbálgatni, nem kötik régi lib-ek stb. Egy sokfős team, komoly határidőkkel vajon beleugorhatott volna akár az 1.1-be anno? Mert a 2.0+-ba, idén, már valószínűleg igen, de hát ez csak amolyan érzés.
[ Szerkesztve ]
--= Zalán =--
-
Zalanius
tag
válasz daninet #8204 üzenetére
Azon túl, hogy megszívlelendő, amit #8205 Jok3r! már leírt nagy vonalakban, a kódban levő minden mostani fordítási hiba (tehát az egyéb elnevezésektől és felesleges részektől tekintsünk most el!) lényegében egyetlen rossz értelmezésből ered. Rendben volna a két új form, amit adatbevitel céljából létrehoztál, de a ShowDialog() hívásokból is látszik, hogy ezeknél olyasmi a szándék, hogy az ablak megjelenik, az inputoknak értéket adunk, aztán eltűnik -> és itt a szerepe véget ért. Ha utána kell a beírt adat tartósan, akkor nem a formokat kell List<>-be gyűjteni, hanem a Jarmu és Allat osztályok példányait.
Tehát röviden: ahol List<> deklarációid vannak, oda nem az UjJarmu és UjAllat, hanem a Jarmuvek és Allatok írandó. Több helyen is:
List<Allatok> aLista = new List<Allatok>();
List<Jarmuvek> jLista = new List<Jarmuvek>();Egyből sikeres a build, ha ezeket a módosításokat megléped. Nem mondom, hogy minden összevág, de először ezt kell tisztába tenni, hogy a formok között legyen adatcsere.
--= Zalán =--
-
Zalanius
tag
válasz Randomized #8213 üzenetére
Ez most elég favágós lesz, de hagyhatnád a loading képet végig a teljes méretén, és fölötte egy 50+ akárhány %-ban átlátszó másik "árnyékoló" png-t jobbra összenyomva "halad" is a progress, és nem is torzul a mintázat.
[ Szerkesztve ]
--= Zalán =--
-
Zalanius
tag
Összefüggenek persze, de ami engem jobban foglalkoztat: az EF Core is végre "nagykorú" lett, érdemes itt körülnézni.
[ Szerkesztve ]
--= Zalán =--
-
Zalanius
tag
https://hash.online-convert.com/crc32-generator
Ez ugyanazt az eredményt dobja, mint amit bemásoltál, e9032c43
Ugyanott van viszont egy módosított változat is:
https://hash.online-convert.com/crc32b-generatorEnnél már a C#-féle eredmény adódik. Ugyanez kapható ezzel a megoldással is:
https://github.com/force-net/Crc32.NET--= Zalán =--
-
Zalanius
tag
válasz RedHarlow #8268 üzenetére
Szerintem nagyjából ezt keresed: Office interop objects.
A bemásolt kódod tehát valahogy így folytatódik (ez nyilván csak vázlat, nem is csináltunk semmit a dokumentummal a megnyitáson kívül):
...
excel.Visible = true;
var wbk = excel.Workbooks.Open(path);--= Zalán =--
-
Zalanius
tag
válasz Micsurin #8299 üzenetére
Ötlet (volt már dolgom hasonlóval, és talán beválik most is):
1. Beállítások törlése
Devenv /ResetSettings
Telepítési helytől függően valahol itt kell keresni a devenv-et:
c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.com2. Ha a VS-ben használt microsoftos accountba beléptél nemrég Edge-ben vagy IE11-ben, akkor töröld a böngésző előzményeit.
3. Jelentkezz be a fiókba böngészőből, ekkor kiderül, hogy problémázik-e magának a loginnak a folyamatával valamiért.
4. VS új próbálkozás
--= Zalán =--
-
Zalanius
tag
válasz bandi0000 #8526 üzenetére
Annyit tennék még hozzá, hogy ha az SQL változat jobban előtted van, akkor próbáld meg FK nélkül, minél olvasmányosabban felírni a LINQ-t. Vegyük az alábbit:
SELECT stud.FirstMidName + ' ' + stud.LastName AS FullName, grp.Credits
FROM dbo.Student AS stud
JOIN
(
SELECT enroll.StudentId , SUM(crs.Credit) AS Credits
FROM dbo.Enrollment AS enroll
JOIN dbo.Course AS crs ON enroll.CourseId = crs.Id
GROUP BY enroll.StudentId
) AS grp
ON grp.StudentId = stud.Id;Ennek egy megoldása:
var creditsByStudent = from sub in (from e in ent.Enrollments
join c in ent.Courses on e.CourseId equals c.Id
select new { e.StudentId, c.Credit })
group sub by sub.StudentId into g
join s in ent.Students on g.Key equals s.Id
select new
{
FullName = s.FirstMidName + " " + s.LastName,
Credits = g.Sum(x => x.Credit)
};--= Zalán =--
-
Zalanius
tag
válasz joysefke #8547 üzenetére
De hát a csv-k esetében az pont szándékos, amit a (2)-ben írtál, mert a szövegjelölő " ... " nélkül nem lehetne vessző a cellákban / mezőkben egyáltalán, vagy szétesik a táblaszerkezet. Ezt minden parsernek kezdettől fogva tudnia kell, az excel is simán boldogul vele, az importáláskor még meg is adható, mit tekintsen szövegjelölőnek. Inkább arra gyanakszom, hogy CR / LF lesz egy vagy több szövegben, és azt már az Excel legendásan rosszul tűri.
Ha érdekel kódszinten is a szövegjelölők kezelése, itt egy jó régről származó példa, amit utána sokáig csiszolgattak.
--= Zalán =--
-
Zalanius
tag
Ez nem pont a keresett megoldás lesz, de miközben olvastam a kódodat, eszembe jutott pár dolog. Például van már létező osztály kétszeres láncolt listára, és extension methodokkal simán számol átlagot is minden egyéb nélkül. De ha valamit mélyebben berhelni kell, az sem probléma, példaként ott egy customsum. Dividebyzeroval most nem vacakoltam.
class Program
{
static void Main(string[] args)
{
int[] costs = new int[] { 10, 20, 1 };
var linkedcosts = new MyList<int>(costs);
int costsum = linkedcosts.CustomSum();
double costavg = costsum / (double)linkedcosts.Count;
int costsum2 = linkedcosts.Sum();
double costavg2 = linkedcosts.Average();
string[] names = new string[] { "Gips", "Jacob" };
var linkednames = new MyList<string>(names);
string namessum = linkednames.CustomSum();
string namessum2 = linkednames.Aggregate("", (c, n) => c + n);
Console.ReadKey();
}
}
class MyList<T> : LinkedList<T>
{
public MyList() : base()
{
}
public MyList(IEnumerable<T> collection) : base(collection)
{
}
public T CustomSum()
{
T sum = default(T);
if (First == null)
{
return sum;
}
sum = First.Value;
LinkedListNode<T> temp2 = First.Next;
while (temp2 != null)
{
sum += (dynamic)temp2.Value;
temp2 = temp2.Next;
}
return sum;
}
}szerk. megoldódott látom, így végül is offtopicnak is tárgytalan, de itt hagyom, hátha segít még vmit.
[ Szerkesztve ]
--= Zalán =--
-
Zalanius
tag
válasz tomazin #8646 üzenetére
Miért adtál argumentumot a clientnek? Nélküle rendben működik. (Rövidítettem a deklarációkon, hogy ne legyen scrollbar.)
var client = new MNBArfolyamServiceSoapClient();
var body = new GetCurrenciesRequestBody();
var resp = client.GetCurrencies(body);
Console.WriteLine(resp.GetCurrenciesResult);--= Zalán =--
-
Zalanius
tag
válasz t-shirt #8699 üzenetére
A ciklusban, a létrehozott példányoknál célszerű elvégezni még az eseménykezelő hozzárendelését, valahogy így:
rdo.CheckedChanged += new System.EventHandler(this.Altalad_Felirt_Metodus);
Aztán az eseménykezelőben a sender objectről feltételezzük, hogy RadioButton:
RadioButton rb = (RadioButton)sender;
// stb.De lehet külön típusvizsgálatot is tartani egy is segítségével, ha éppen szükséges.
--= Zalán =--
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Milyen TV-t vegyek?
- Honda topik
- No Voice in the Galaxy
- gban: Ingyen kellene, de tegnapra
- KERÉKPÁR / BRINGA / ALKATRÉSZ beárazás
- Call of Duty: Modern Warfare III (2023)
- VR topik (Oculus Rift, stb.)
- Poco X6 Pro - ötös alá
- Kerékpárosok, bringások ide!
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
- További aktív témák...