witam.
Jak zrobic aby TMonthCalendar nalozony na TImage był przezroczysty w sensie zeby bylo widac zdjecie w TImage pod liczbami miesiaca - TMonthCalendar.
dzieki za odp.
pozdro.
witam.
Jak zrobic aby TMonthCalendar nalozony na TImage był przezroczysty w sensie zeby bylo widac zdjecie w TImage pod liczbami miesiaca - TMonthCalendar.
dzieki za odp.
pozdro.
4 dni temu pytałeś o to samo. Jeśli nikt Ci nie odpowiedział, to pewnie znaczy, że nikt nie wiedział. Ew. mogłeś odwieżyć tamten temat albo go usunąć pisząc ten.
tak prawde mowiac to najlepiej by bylo jak bys napisal wlasny MonthCalendar.
ewentualnie poszukaj czegos w necie, cos powinienes znaleŹĆ.
jesli zadowoli cie takie prowizoryczne (i to bardzo) rozwiazanie to pokombinuj z czyms tego typu:
procedure TForm1.Button1Click(Sender: TObject);
var C:TCanvas;
B:TBitmap;
x,y:Integer;
line : PByteArray;
lineBack: PByteArray;
begin
C:=TCanvas.Create;
C.Handle:=GetWindowDC(MonthCalendar1.Handle);
B:=TBitmap.Create;
B.Width:=MonthCalendar1.Width;
B.Height:=MonthCalendar1.Height;
B.Canvas.CopyRect(Rect(0,0,197,153),C, Rect(0,0,197,153));//Tu daj rozmiar MonthCalendar1
B.PixelFormat:=pf24Bit;
for y:=0 to B.Height-1 do
begin
Line:=B.ScanLine[y];
LineBack:=Image1.Picture.Bitmap.ScanLine[y];
x:=0;
repeat
If RGB(Line[x+2],Line[x+1],Line[x])=MonthCalendar1.CalColors.MonthBackColor then
begin
Line[x]:=LineBack[x];
Line[x+1]:=LineBack[x+1];
Line[x+2]:=LineBack[x+2];
end;
x:=x+3;
until x>(B.Width-1)*3;
end;
C.Draw(0,0, B);
B.Free;
C.Free;
ZeroMemory(Line, SizeOf(Line));
ZeroMemory(LineBack, SizeOf(LineBack));
end;
dzieki
ale jest błąd...
podczas uruchamiania:
Project Project1.exe raised exception class EInvalidGraphicOperation with message 'Scan line index out of range'. Process stopped. Use Step or Run to continue.
i zaraz włacza sie projekt z errorkiem
"scan line index out of range"
i zdjecie z image wywaliło a projekt wlacza sie normalnie.
i lipa:/
pokombinuje...
chyba jest cos z rozmiarami obrazka albo MonthCalendar...
pozmieniaj tu i tam i powinno pomoc...
no wlasnie kminilem nad tym i nic to nie dało
B.Canvas.CopyRect(Rect(0,0,200,200),C, Rect(0,0,200,200));//Tu daj rozmiar
height i width ustawilem na 200 - Image i TMonthCalendar i nic.
(0,0,200,200) ?
x, y, height, width?
napisz jakie sa wymiary MonthCalendar i tego obrazka w Image1 i napisz na ktorej linii wywala blad...
cimak daj mi do siebie nr gadulca - zagadam.
a nie wywala bledu na kodziku tylko... jak sie juz wlacza program to wtedy jest zawiecha...
daj mi do siebie nr gadu najlepiej pogadamy jak bedziesz mial chwile.
a rozmiary podalem obudwu komponentow - image i tmonthcal - na 200 x 200
i obydwa są w pozycjach 0, 0
pozdrowionka
3m sie
moj gg: 7870745